SQL - consulta por intervalo de datas
Pergunta
Eu tenho uma tabela cabeçalho da ordem chamado "OrderH". Nesta tabela há uma coluna chamada "OrderDate". Eu estou tentando recuperar as ordens com uma data dentro de um determinado intervalo. Eu pensei que eu poderia fazer isso com o "entre" palavra-chave, mas não estou tendo nenhuma sorte. Este é esse SQL I foram fidgiting com:
select
*
from
OrderH h
where
h.OrderDate between '2009-06-16' and '2009-06-01'
order by
h.OrderDate desc
O que estou fazendo de errado?
Solução
a data menor tem que ser o primeiro
between '2009-06-01' and '2009-06-16'
em vez de
between '2009-06-16' and '2009-06-01'
Também deve ter cuidado ao usar entre, porque você vai obter o valor da meia-noite a partir da data maior e mais nada
Dê uma olhada em Como o Entre trabalhar com datas no SQL Server?
Outras dicas
A consulta não funciona porque no seu exemplo primeira data é maior do que a segunda data. Trocar as datas. Primeiro deve ser menor ou igual a segunda data.
É difícil encontrar datas que terminam antes de começar. Alterar o min e max ...
h.OrderDate between '2009-06-01' and '2009-06-16'
select
*
from
OrderH h
where
h.OrderDate between '2009-06-01' and '2009-06-16'
order by
h.OrderDate desc
eventos Em MS-SQL Server que acontecem após 2009-06-16 à meia-noite não serão incluídos.