SQL - Requête par plage de dates
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?
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.