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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top