我正在尝试选择过去2小时内的行。由于某种原因,它不起作用。代码语法看起来没问题,并且在其他表上使用时可以正常工作,但由于某些原因,当在表Posts
上使用时,获取的行数大于2小时。
SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)
代码有问题吗?还有其他方法可以写吗?这可能是什么原因?
答案 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())