DATETIME选择过去2小时的行

时间:2012-11-19 22:31:11

标签: mysql sql

我正在尝试选择过去2小时内的行。由于某种原因,它不起作用。代码语法看起来没问题,并且在其他表上使用时可以正常工作,但由于某些原因,当在表Posts上使用时,获取的行数大于2小时。

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

代码有问题吗?还有其他方法可以写吗?这可能是什么原因?

5 个答案:

答案 0 :(得分:19)

您可以使用更简单的表示法:

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR

答案 1 :(得分:8)

那是因为您使用的是CURRENT_DATE,您应该使用NOW()CURRENT_TIMESTAMP代替。

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

答案 2 :(得分:6)

改为:

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

答案 3 :(得分:1)

你可以尝试这个

SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)

答案 4 :(得分:0)

以上答案对我都没有帮助,请尝试以下方法:

SELECT * FROM POSTS WHERE DATE > DATEADD(HH, (-2), GETDATE())