2009-06-17 7 views
1

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 fourchette. J'ai pensé que je pourrais accomplir ceci avec le mot-clé "entre" mais je n'ai pas de chance. C'est ce SQL que j'ai été fidgiting avec:SQL - Requête par plage de dates

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 mal?

+0

Utilisez-vous MSSQL ou MySQL? –

+0

Veuillez ajouter plus d'informations sur le SGBD, la description de la table en question, les messages d'erreur, etc. –

+0

Si MySQL: est votre OrderDate colonne de type "date" ou " timestamp "colonne? –

Répondre

8

la date plus petite doit être le premier

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

au lieu de

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

Aussi soyez prudent lorsque vous utilisez entre parce que vous obtiendrez la valeur de minuit de la date plus grande et rien d'autre

Jetez un oeil à How Does Between Work With Dates In SQL Server?

+1

Wow. J'ai besoin de plus de café. Je ne peux pas croire que j'ai oublié quelque chose d'aussi simple. –

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

La requête ne fonctionne pas car, dans votre exemple, la première date est plus grande que la deuxième date. Échanger les dates. Le premier doit être inférieur à la deuxième date.

1

Il est difficile de trouver les dates qui se terminent avant qu'elles ne commencent. Modifier les min et max ...

h.OrderDate between '2009-06-01' and '2009-06-16' 
0

Les événements MS-SQL Server qui se produisent après le 16/06/2009 à minuit ne seront pas inclus.

Questions connexes