Comando SELECT para selecionar intervalo de data SQL SERVER

Pessoal, preciso selecionar uma query somente entre um certo intervalo de tempo. por exemplo do dia 01/12/2010 até 01/12/2011 . e não estou conseguindo fazer funcionar direito o comando.

OBS: Uso SQL Server, e o tipo de dado da coluna é datetime.

O que tentei fazer:

SELECT * FROM tabLogUsuario
WHERE datCadastro BETWEEN 2010/09/10 AND 2011/10/10

Mas a query não retorna nenhuma linha.

Alguém pode me ajudar?

1 curtida

Está usando java?
Use preparadstatement, por favor e evite essas coisas de criar a data e a string na mão.

Estou sim, mas ainda nem cheguei a implementar essa query no java, estou fazendo o teste diretamente pelo SQL Server Management Studio

Edit:
E não funciona!

SELECT * FROM TableData WHERE Data = "2002-02-28"

Daqui http://www.linhadecodigo.com.br/Artigo.aspx?id=946 (para o MSSQL 2000, mas provavelmente não mudou).

Você está colocando as aspas simples na data?
Algo assim:

SELECT * FROM tabLogUsuario WHERE datCadastro BETWEEN '2010/09/10' AND '2011/10/10'

1 curtida

Sim, coloquei as aspas. e nada.

Acabo de fazer o teste, criei um banco de dados e uma tabela contendo uma coluna do tipo datetime
Executei o select

select * from teste where datas between '2011-08-10' and '2011-16-10';

E a saída foi

datas
2011-10-16 00:00:00.000
2011-10-08 00:00:00.000

[quote=drsmachado]Acabo de fazer o teste, criei um banco de dados e uma tabela contendo uma coluna do tipo datetime
Executei o select

select * from teste where datas between '2011-08-10' and '2011-16-10';

E a saída foi

datas 2011-10-16 00:00:00.000 2011-10-08 00:00:00.000 [/quote]

Olá, fiz a seguinte query:

SELECT * FROM tabLogUsuario WHERE datCadastro BETWEEN '2011-01-10' AND '2011-01-12'

E a saída foi:

Aparentemente esse resultado está errado, não está?
Qual o formato da entrada? YYYY/MM/DD?

help me. thanks

Não, meu camarada.
O padrão suportado pelo banco de dados é yyy-MM-dd hh:mm:ss.SSS
A formatação da data é preocupação na camada do aplicativo.

se quer definir o formato, usa a função convert do sql server http://www.w3schools.com/sql/func_convert.asp

Pessoal, por favor, reparem no meu comando select e no resultado.
aparemente ele trás resultados que não está entre o que eu pedi.

Seria pra trazer resultado entre o dia 10 e 12 do mes 1 de 2011, correto?

SELECT * FROM tabLogUsuario
WHERE datCadastro BETWEEN '2011-01-10' AND '2011-01-12'

E aparentemente ele trás todos do mes 10.

Realmente está certo isso?

é o seguinte, eles estão passando pra você como fazer mas não te explicaram o por que.
Você tem que ver como o banco interpreta data, eu estava com dificuldades em localizar também pelo seguinte fator.
A data no Brasil é configurada como DD/MM/AAAA, e no meu banco estava configurado como MM/DD/AA.
Entendeu? a data estava configurada de outra maneira…