SQL: query per intervallo di date
Domanda
Ho una tabella di intestazione dell'ordine chiamata " OrderH " ;. In questa tabella è presente una colonna denominata " OrderDate " ;. Sto cercando di recuperare gli ordini con una data entro un certo intervallo. Ho pensato di poterlo fare con il "tra" parola chiave ma non ho fortuna. Questo è questo SQL con cui mi sono fidato:
select
*
from
OrderH h
where
h.OrderDate between '2009-06-16' and '2009-06-01'
order by
h.OrderDate desc
Cosa sto sbagliando?
Soluzione
la data più piccola deve essere la prima
between '2009-06-01' and '2009-06-16'
anziché
between '2009-06-16' and '2009-06-01'
Fai anche attenzione quando lo usi tra perché otterrai il valore di mezzanotte dalla data più grande e nient'altro
Dai un'occhiata a Come funziona tra le date con SQL Server?
Altri suggerimenti
La query non funziona perché nel tuo esempio la prima data è più grande della seconda data. Scambia le date. Il primo deve essere inferiore alla seconda data.
È difficile trovare le date che finiscono prima che inizino. Modifica 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
Negli eventi MS-SQL Server che si verificano dopo il 16/06/2009 a mezzanotte non saranno inclusi.