我正在查找能够删除时间戳早于当前日期/时间或当前时间戳的数据库中表的所有行的查询。MySQL查询删除时间戳早于当前时间戳的行
真的会很感激这里的一些帮助!
下面是我使用的查询,但因为我认为这是不工作:
delete from events where timestamp<CURRENT_TIMESTAMP{);
我正在查找能够删除时间戳早于当前日期/时间或当前时间戳的数据库中表的所有行的查询。MySQL查询删除时间戳早于当前时间戳的行
真的会很感激这里的一些帮助!
下面是我使用的查询,但因为我认为这是不工作:
delete from events where timestamp<CURRENT_TIMESTAMP{);
delete from events where timestamp < NOW()
应该够了。
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())
,或者如果它是一个标准的datetime
DELETE FROM events WHERE timestamp < NOW()
感谢您的快速回复,但这是行不通的!即使时间戳不早于当前时间/日期,它也会删除所有记录 – Arihant 2012-04-17 19:23:09
将删除转为选择时间戳。你可以显示一些不应该在结果集中的时间戳值吗?也做一个SELECT NOW()。 – 2012-04-17 19:27:44
嗯...这似乎很傻,但在表中的所有记录会比现在()年纪大了,因为现在()在计算查询处理的时间。如果你想删除比其他记录早的记录,那么你不想使用Now(),而是使用记录中的时间戳来比较其他记录。或者,如果您想要删除比特定时间点早的记录,则需要计算您想要用于比较的时间戳。例如,要删除记录早于10分钟后,你可以这样做:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)
或者,删除是在一天的旧记录:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)
对于特定时间点(如十月2012年12月12日,格林威治标准时间下午4点15分),有一种方法可以做到这一点,但是语法现在就逃脱了我。我的MySQL手册在哪里? :)
如果您使用数字PHP时间戳,则需要此额外函数'UNIX_TIMESTAMP(NOW() - INTERVAL 1 YEAR);' – 2015-06-11 19:40:57
DELETE FROM table WHERE date < '2011-09-21 08:21:22';
的Hibernate(HQL)删除记录7天以上
我不知道,但你可以试试这个:
String hqlQuery = "from PasswordHistory pwh "
+ "where pwh.created_date < datediff(curdate(), INTERVAL 7 DAY)";
List<Long> userList = (List<Long>)find(hqlQuery);
deleteAll(userList);// from baseDao
public void deleteAll(Collection list) {
getHibernateTemplate().deleteAll(list);
}
感谢您的快速答复,但不工作!它删除所有的记录,即使时间戳不比当前时间早 – Arihant 2012-04-17 19:22:03
“老”,你的意思是时间戳大于当前时间?那么你必须把声明变成时间戳NOW() – 2012-04-17 19:30:57