13

過去2時間から行を選択しようとしています。何らかの理由で動作しません。コード構文は問題なく見え、他のテーブルで使用すると機能しますが、何らかの理由でテーブルPostsで使用すると、2時間よりもはるかに古い行を取得します。

SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)

コードに問題はありますか?それを書く別の方法はありますか?これの理由は何でしょうか?

4

5 に答える 5

19

より単純な表記を使用できます。

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR
于 2012-11-19T22:34:02.873 に答える
9

これは、を使用しているため、または代わりにCURRENT_DATEを使用する必要があります。NOW()CURRENT_TIMESTAMP

問題はCURRENT_DATE、日付値であるを使用すると、時刻がデフォルトでに設定されるため、2時間を差し引くと、最後の2時間ではなく、前日の00:00:00取得になります...22:00:00

于 2012-11-19T22:35:00.583 に答える
6

これに変更:

SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
于 2012-11-19T22:33:27.843 に答える
1

これを試すことができます

SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)
于 2016-08-02T12:02:41.313 に答える
0

上記の答えはどれも私にはうまくいきませんでした、これを試してください:

SELECT * FROM POSTS WHERE DATE > DATEADD(HH, (-2), GETDATE())
于 2019-01-24T13:58:24.887 に答える