2012-10-22 10 views
5

DATETIMEの「発生しました」という列の「アクション」というテーブルがあります。私は今日のために次のようにしてレコードを返そうとしていますMySQLはDATETIMEフィールドのDATEを使用して今日のレコードを返します

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

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

ありがとうございます。 occurredでいない将来の日付であった場合

答えて

4

、あなただけの下に使用することができます

SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY); 
+0

これは素晴らしい作品です。将来のデータはありません。厳密には、NOWと過去のエントリを比較することになります。早速のご返事ありがとうございます! – rws907

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

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

ここでは、データを再生するためのSQLフィドルです:http://www.sqlfiddle.com/#!2/81708/2

関連する問題