6

DATETIME「occurred」という列を持つ「actions」というテーブルがあります。次のようにして、今日のレコードを返そうとしています。

SELECT * FROM `actions` WHERE `occurred` = DATE(NOW());

しかし、私は空の結果セットを取得します。句をWHERE削除すると、テーブル内の295行すべてが表示され、今日から少なくとも30行あります。後で、今日の日付から過去X日までのすべてのレコードを返す別のクエリを作成しますが、そこに到達する前に、このクエリが空の結果セットを返す理由を知る必要があります。

前もって感謝します。

4

2 に答える 2

8
SELECT * FROM actions WHERE DATE(ocurred) = CURDATE();

DATE(ocurred)時間の部分を無視します。

データを操作するSQLフィドルは次のとおりです。http ://www.sqlfiddle.com/#!2/81708/2

于 2012-10-22T02:14:22.647 に答える
6

に将来の日付がない場合はoccurred、以下を使用できます。

SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY);
于 2012-10-22T02:04:57.957 に答える