Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
estou com um problema ao fazer um select com datas, eu preciso pegar uma quantidade de acessos em um intervalo de data.
Quando o intervalo é dentro do mesmo mês tudo certo, o problema está quando quero de um mês para outro, ex: 09/2011 a 10/2011, a lista retorna os intervalos de todos os anos, abaixo segue a query e o resultado apresentado:
SQL: 'SELECT sum(Visits) as 'Acessos', sum(Qtd_Inscritos) as 'Inscritos',sum(Qtd_Questoes) as 'Questoes', RIGHT(CONVERT(VARCHAR(10), Data, 103), 7) as 'Data Cadastro'
FROM tbl_metricas
WHERE RIGHT(CONVERT(VARCHAR(10), Data, 103), 7) between '09/2011' and '10/2011'
GROUP BY RIGHT(CONVERT(VARCHAR(10), Data, 103), 7);'
Resultado
| Acessos | Data Cadastro |
490 09/2011
58788 09/2012
238393 09/2013
66 10/2011
O que preciso
| Acessos | Data Cadastro |
490 09/2011
66 10/2011
Desde já agradeço a colaboração de todos.
Já testei o datepart e ele me traz o mesmo problema.
Qual a sintaxe que esta sendo utilizada com o datepart?
insert into @Resultado values (490, '2011-09-01')
insert into @Resultado values ( 58788, '2012-09-02')
insert into @Resultado values (238393, '2013-09-02')
insert into @Resultado values (66, '2011-10-15')
select * from @Resultado
select *
from @Resultado
where (datepart(month, DataCadastro) between 9 and 10 -- mes 9 e 10
and datepart(year, DataCadastro) = 2011) -- ano de 2011Grande A.Jr,
problema resolvido.
O problema estava no formato da data, que estava diferente da que está no banco.
Segue a query correta:
SELECT sum(Visits) as 'Acessos', sum(Qtd_Inscritos) as 'Inscritos',sum(Qtd_Questoes) as 'Questoes', RIGHT(CONVERT(VARCHAR(10), Data, 103), 7) as 'Data Cadastro'
FROM tbl_metricas
WHERE Data between '2011-09-01' and '2011-12-31'
GROUP BY RIGHT(CONVERT(VARCHAR(10), Data, 103), 7)
Agradeço grandemente pela ajuda, e até a próxima. :yes:
Abs,
Antonio
ja que seu campo é datetime, pq nao utiliza o DATEPART no where?
select datepart(month, getdate()) as mes
, datepart(year, getdate()) as ano