我正在尝试从过去 2 小时中选择行。由于某种原因,它不起作用。代码语法在其他表上使用时看起来不错并且可以工作,但由于某种原因在 table 上使用时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()
orCURRENT_TIMESTAMP
代替。
问题是使用CURRENT_DATE
, 作为日期值,时间默认为00:00:00
,因此通过减去 2 小时,您最终会得到22:00:00
前一天,而不是最后 2 小时......
改为:
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())