2011-09-13 50 views
6
startTimestamp < date_sub(curdate(), interval 1 hour) 

上面的(子)查询是否会返回在小时内创建的所有记录?如果没有人请给我一个正确的?完整的查询可能看起来如下:选择在小时内创建的所有记录

select * from table where startTimestamp < date_sub(curdate(), interval 1 hour); 

回答

15

不是CURDATE(),使用NOW()和使用>=而非<既然你想时间戳比一小时前的时间戳。 CURDATE()只返回日期部分,其中NOW()返回日期和时间。

startTimestamp >= date_sub(NOW(), interval 1 hour) 

例如,在我的时区是12:28

SELECT NOW(), date_sub(NOW(), interval 1 hour); 
2011-09-13 12:28:53 2011-09-13 11:28:53 

总之,你需要的是:

select * from table where startTimestamp >= date_sub(NOW(), interval 1 hour); 
+0

感谢。有用! – tribal

+0

如何减去它以便从12:28:53我得到11:00:00? – PeeS

+0

我可以从单个数据库的所有表中进行选择吗? – mario