Question

J'ai une table d'en-tête de commande appelée "OrderH". Dans cette table, il y a une colonne appelée "OrderDate". J'essaie de récupérer les commandes avec une date dans une certaine plage. Je pensais que je pouvais accomplir cela avec le paramètre "Entre". mot-clé mais je n'ai pas de chance. Voici ce SQL avec lequel je suis fidèle:

select 
    * 
from
    OrderH h
where
        h.OrderDate between '2009-06-16' and '2009-06-01'
order by
    h.OrderDate desc

Qu'est-ce que je fais de travers?

Était-ce utile?

La solution

la date la plus petite doit être la première

between  '2009-06-01' and '2009-06-16'

au lieu de

between '2009-06-16' and '2009-06-01'

Faites également attention lorsque vous utilisez entre, car vous obtiendrez la valeur de minuit à partir de la date la plus grande et rien d’autre

Découvrez Comment fonctionne-t-il entre des dates dans SQL Server?

Autres conseils

La requête ne fonctionne pas car, dans votre exemple, la première date est supérieure à la deuxième date. Échangez les dates. La première doit être inférieure à la deuxième date.

Il est difficile de trouver des dates qui se terminent avant qu’elles ne commencent. Changer les min et 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

Dans MS-SQL Server, les événements survenant après le 2009-06-16 à minuit ne seront pas inclus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top