MySQLステートメントに> = NOW()-1で(日付スタンプを介して)レコードを順序付ける方法はありますか?今日の前日から未来までのすべてのレコードが選択されますか?
MySQLステートメントに> = NOW()-1で(日付スタンプを介して)レコードを順序付ける方法はありますか?今日の前日から未来までのすべてのレコードが選択されますか?
回答:
日付/時刻関数のドキュメントから判断すると、次のようなことができるはずです。
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
結果が予想と少し異なる場合があることに注意してください。
NOW()
を返す DATETIME
。
そしてINTERVAL
名前のとおりに動作します、例えばINTERVAL 1 DAY = 24 hours
ます。
したがって、スクリプトをで実行するようにcron化する03:00
と、first three hours of records from the 'oldest' day
。
終日使用するにはを使用しますCURDATE() - INTERVAL 1 DAY
。これは、スクリプトがいつ実行されたかに関係なく、前日の初めに戻ります。
あと少しです。 NOW() - INTERVAL 1 DAY
できますよ:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
DATE_ADD
then を使用して混乱してい-1 day
ます。
DATE_ADD
またはを使用して回答が正しく表示されなかったDATE_SUB
:
から1日を引く NOW()
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)
から1日を追加 NOW()
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)