web-dev-qa-db-ja.com

過去24時間の日付フィールドを持つレコードを検索する

SQLクエリで、過去24時間のレコードを検索するにはどうすればよいですか?例えば

   SELECT * FROM news WHERE date < 24 hours

私は通常、変数にdate()-1日を設定してそれを比較しますが、SQLクエリの方が速いかどうか疑問に思いましたか?

75
user1022585

現在の時刻から1日を引いた日付よりも高い日付を選択するだけです。

SELECT * FROM news WHERE date >= now() - INTERVAL 1 DAY;
118
a'r
SELECT * FROM news WHERE date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
62
Andrew
SELECT * from new WHERE date < DATE_ADD(now(),interval -1 day);
9
giuseppe

過去24時間のレコードを取得するには:

SELECT * from [table_name] WHERE date > (NOW() - INTERVAL 24 HOUR)
7
NarayanaReddy
SELECT * FROM news WHERE date > DATEADD(d,-1,GETDATE())
3
Simon

これを行うには非常に多くの方法があります。リストされているものはうまく機能しますが、日時フィールドがある場合は別の方法があります:

_SELECT [fields] 
FROM [table] 
WHERE timediff(now(), my_datetime_field) < '24:00:00'
_

timediff()はtimeオブジェクトを返すので、それを86400(1日の秒数)と比較するのを間違えないでください。そうしないと、出力があらゆる種類の間違ったものになります。

3
Craig Labenz