13

我正在尝试从过去 2 小时中选择行。由于某种原因,它不起作用。代码语法在其他表上使用时看起来不错并且可以工作,但由于某种原因在 table 上使用时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()orCURRENT_TIMESTAMP代替。

问题是使用CURRENT_DATE, 作为日期值,时间默认为00:00:00,因此通过减去 2 小时,您最终会得到22:00:00前一天,而不是最后 2 小时......

于 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 回答