DATETIME选择过去2小时的行

lis*_*aro 12 mysql sql

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

SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)
Run Code Online (Sandbox Code Playgroud)

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

Ray*_*Ray 19

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

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR
Run Code Online (Sandbox Code Playgroud)


Dar*_*jax 8

那是因为你正在使用CURRENT_DATE,你应该使用NOW()CURRENT_TIMESTAMP代替.

问题是使用CURRENT_DATE,作为日期值,默认时间00:00:00,所以通过减去2小时你最终获得22:00:00前一天,而不是最后2小时......


Nes*_*zon 6

改为:

SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
Run Code Online (Sandbox Code Playgroud)