我正在尝试从过去 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())