Usuário com melhor resposta
SQL Server erro no between

Pergunta
-
Olá pessoal...
Tenho um select entre datas do tipo datetime que só retorno os dados quanto coloco o parâmetro no mesmo mês, se eu colocar a busca com mês diferente não retorna nada ex:
AND CONVERT(varchar(10), at.DataCadastro, 103) >= '01/05/2012'
AND CONVERT(varchar(10), at.DataCadastro, 103) <= '03/05/2012' (mesmo mês)Aqui retorna normal, mas assimAND CONVERT(varchar(10), at.DataCadastro, 103) >= '15/04/2012'
AND CONVERT(varchar(10), at.DataCadastro, 103) <= '03/05/2012'(mês diferente) Aqui não retorna nada, mas os dados estão entre o período passado. Já tentei com between e dá a mesma coisa.
Alexander
Respostas
-
Alexander,
Acredito
que é porque você esta comparando duas strings, logo 15 é maior que 03,
para funcionar você tem que comparar duas datas.
Ex:
CREATE TABLE #TESTE( DATA DATETIME ) INSERT INTO #TESTE VALUES ('20120510'),('20120420'),('20120502'),('20120501') SELECT DATA FROM #TESTE WHERE CONVERT(VARCHAR(10), DATA, 103) >= '15/04/2012' AND CONVERT(VARCHAR(10), DATA, 103) <= '03/05/2012' SET DATEFORMAT dmy SELECT DATA FROM #TESTE WHERE DATA >= '15/04/2012' AND DATA <= '03/05/2012'
Att.
Lukas Baldan- Marcado como Resposta Alexander Leão quinta-feira, 10 de maio de 2012 13:11
Todas as Respostas
-
-
-
Alexander,
Acredito
que é porque você esta comparando duas strings, logo 15 é maior que 03,
para funcionar você tem que comparar duas datas.
Ex:
CREATE TABLE #TESTE( DATA DATETIME ) INSERT INTO #TESTE VALUES ('20120510'),('20120420'),('20120502'),('20120501') SELECT DATA FROM #TESTE WHERE CONVERT(VARCHAR(10), DATA, 103) >= '15/04/2012' AND CONVERT(VARCHAR(10), DATA, 103) <= '03/05/2012' SET DATEFORMAT dmy SELECT DATA FROM #TESTE WHERE DATA >= '15/04/2012' AND DATA <= '03/05/2012'
Att.
Lukas Baldan- Marcado como Resposta Alexander Leão quinta-feira, 10 de maio de 2012 13:11
-
Lukas,
É verdade, mas como meu campo é datetime eu converto pra pegar somente a data e não a hora. Coloquei no lugar do varchar o tipo date. ficou assim:
AND CONVERT(date, at.DataCadastro, 103) >= '01/04/2012'
AND CONVERT(date, at.DataCadastro, 103) <= '05/05/2012'Funcionou. Muito obrigado.
Alexander