SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9) AND date BETWEEN '2013-05-22' AND '2013-05-22'
上記のクエリが機能しない、空の行が選択されていることを示す
しかし、以下は機能しています
SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9)
BETWEEN '2013-05-22' AND '2013-05-22'
datetime
列がある場合、これは次のように変換されます
BETWEEN '2013-05-22 00:00:00' AND '2013-05-22 00:00:00'
私はあなたが欲しいと思います
BETWEEN '2013-05-22' AND '2013-05-23'
...実際に日付のレコードがあり2013-05-22
、1 日だけが必要であると仮定します。
個人的には、datediff 関数を使用するのが好きです。
SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9) AND
DATEDIFF(date,'1/1/2013') = 0
自分が何をしているのかがより明確になり、between
オペレーターが行うように、誤って別の日に引き込んだり、1 日の終わりにレコードを除外したりすることはありません。
もう 1 つの方法は、単純に日付にキャストすることです。
CAST(dateField AS date)
編集: MySQL 構文に変更されました。
BETWEEN '2013-05-22' AND '2013-05-22'
- これは 0 と 0 の間の数値を取得するようなものです。同じ日の場合は、2 つの異なる日付または 2 つの異なる時刻に変更します。