2009-06-17 25 views
1

私は "OrderH"というオーダーヘッダーテーブルを持っています。この表には「OrderDate」という列があります。私は特定の範囲内の日付で注文を取得しようとしています。私は "between"キーワードでこれを達成できると思ったが、私は運がない。これはこのSQLです。私はfidgitingしています:SQL - 日付範囲による照会

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

私は間違っていますか?

+0

MSSQLまたはMySQLを使用しています –

+0

DBMSの詳細、問題のテーブルの説明、エラーメッセージがある場合などの情報を追加してください。 –

+0

MySQLの場合:OrderDateに "date"タイプの列または "タイムスタンプ "列? –

答えて

8

少ない日が最初

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

代わりの

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

の間で使用しているときに、より大きな日付と何も

から深夜値を取得しますので、また注意することがあります

見てくださいHow Does Between Work With Dates In SQL Server?

+1

うわー。私はもっ​​とコーヒーが必要です。私はとても単純なものを見落としたとは信じられません。 –

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

例では、最初の日付が2番目の日付よりも大きいため、クエリが機能しません。日付を交換します。最初は2番目の日付以下でなければなりません。

1

開始する前に終了する日付を見つけるのは難しいです。最小値と最大値を変更してください。

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

2009-06-16の深夜0時以降に発生するイベントは含まれません。