我正在寻找能够从数据库中的表中删除所有行的查询,其中时间戳早于当前日期/时间或当前时间戳。
非常感谢一些紧急帮助!
这是我正在使用的查询,但我认为它不起作用:
delete from events where timestamp<CURRENT_TIMESTAMP{);
答案 0 :(得分:23)
嗯......这可能看起来很愚蠢,但表中的每条记录都会比Now()旧,因为Now()是在处理查询时计算的。如果要删除比其他记录旧的记录,则不希望使用Now(),而是使用记录中的时间戳来比较其余记录。或者,如果要删除早于特定时间点的记录,则需要计算要用于比较的时间戳。例如,要删除超过10分钟的记录,您可以使用:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)
或者,删除超过一天的记录:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)
对于特定时间点(例如,2012年10月12日格林尼治标准时间下午4:15:00),有一种方法可以做到这一点,但语法现在让我失望了。我的MySQL手册在哪里? :)
答案 1 :(得分:8)
delete from events where timestamp < NOW()
应该足够了。
答案 2 :(得分:1)
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())
或者如果它是标准日期时间
DELETE FROM events WHERE timestamp < NOW()
答案 3 :(得分:1)
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);
}
答案 4 :(得分:-3)
DELETE FROM table WHERE date < '2011-09-21 08:21:22';