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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top