過去2時間から行を選択しようとしています。何らかの理由で動作しません。コード構文は問題なく見え、他のテーブルで使用すると機能しますが、何らかの理由でテーブルPosts
で使用すると、2時間よりもはるかに古い行を取得します。
SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)
コードに問題はありますか?それを書く別の方法はありますか?これの理由は何でしょうか?
より単純な表記を使用できます。
SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR
これは、を使用しているため、または代わりにCURRENT_DATE
を使用する必要があります。NOW()
CURRENT_TIMESTAMP
問題はCURRENT_DATE
、日付値であるを使用すると、時刻がデフォルトでに設定されるため、2時間を差し引くと、最後の2時間ではなく、前日の00:00:00
取得になります...22:00:00
これに変更:
SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
これを試すことができます
SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)
上記の答えはどれも私にはうまくいきませんでした、これを試してください:
SELECT * FROM POSTS WHERE DATE > DATEADD(HH, (-2), GETDATE())