1
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)
4

3 に答える 3

3
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 日だけが必要であると仮定します。

于 2013-05-20T19:57:37.657 に答える
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 構文に変更されました。

于 2013-05-20T20:19:46.187 に答える
0

BETWEEN '2013-05-22' AND '2013-05-22'- これは 0 と 0 の間の数値を取得するようなものです。同じ日の場合は、2 つの異なる日付または 2 つの異なる時刻に変更します。

于 2013-05-20T19:59:47.157 に答える