MySQL:删除超过10分钟的所有行

MySQL:删除超过10分钟的所有行,mysql,datetime,Mysql,Datetime,我的表中有一个时间戳字段。如何删除超过10分钟的记录 我试过这个: DELETE FROM locks WHERE time_created < DATE_SUB( CURRENT_TIME(), INTERVAL 10 MINUTE) 但奇怪的是,这也给出了错误的结果 time_created CURRENT_TIMESTAMP TIMESTAMPDIFF( MINUTE, time_created, CURRENT_TIMESTAMP ) 2010-

我的表中有一个时间戳字段。如何删除超过10分钟的记录

我试过这个:

DELETE FROM locks WHERE time_created < DATE_SUB( CURRENT_TIME(), INTERVAL 10 MINUTE)
但奇怪的是,这也给出了错误的结果

time_created CURRENT_TIMESTAMP TIMESTAMPDIFF( MINUTE, time_created, CURRENT_TIMESTAMP ) 2010-08-01 11:22:29 2010-08-08 12:00:48 10118 2010-08-01 11:23:03 2010-08-08 12:00:48 10117 创建时间\u当前时间戳TIMESTAMP TIMESTAMP diff(分钟、创建时间\u、当前时间戳) 2010-08-01 11:22:29 2010-08-08 12:00:48 10118
2010-08-01 11:23:03 2010-08-08 12:00:48 10117如果创建的时间是unix时间戳(int),您应该能够使用如下内容:

DELETE FROM locks WHERE time_created < (UNIX_TIMESTAMP() - 600);
从创建时间的锁中删除(UNIX\u TIMESTAMP()-600);
(600秒=10分钟-显然)

否则(如果创建的时间是mysql时间戳),您可以尝试以下方法:

DELETE FROM locks WHERE time_created < (NOW() - INTERVAL 10 MINUTE)
从创建时间的锁中删除<(现在()-间隔10分钟)

答案就在前面

“从'table\u name'中删除,其中'time\u col`
您的字段类型是什么?id[int(11)],创建时间[timestamp]是否选择日期子项(当前时间(),间隔10分钟)返回您期望的内容?如果没有,请检查服务器时间。@Oden:11:55:51,
选择当前时间戳
给出2010-08-08 11:56:25,但
TIMEDIFF(当前时间戳,创建的时间)
也给出了错误的数字。上一个示例有什么问题?给出的时间戳之间有7天37-38分钟。这相当于10117-10118分钟…不确定这是否正确,UNIX_TIMESTAMP()输出数字,我猜是以毫秒为单位,time_create[TIMESTAMP]字段显示时间为2010-08-01 11:22:29Hmm。。。尝试从锁中选择创建的时间(现在()-间隔10分钟)、日期子(当前时间(),间隔10分钟)它们是否提供了可比较的结果?根据我的经验,中间的一个会给你一个mysql时间戳,而最后一个会返回
NULL
。非常感谢。类似的答案在顶部,数量合适,并且有其他选择。猜测正确与最佳答案不同“间隔-1小时”应为“间隔-1小时”
DELETE FROM locks WHERE time_created < (NOW() - INTERVAL 10 MINUTE)
"DELETE FROM `table_name` WHERE `time_col` < ADDDATE(NOW(), INTERVAL -1 HOUR)"