7

我正在寻找一个能够从数据库中的表中删除所有行的查询,其中时间戳早于当前日期/时间或当前时间戳。

非常感谢您在这里紧急提供一些帮助!

这是我正在使用的查询,但我认为它不起作用:

delete from events where timestamp<CURRENT_TIMESTAMP{);
4

5 回答 5

28

嗯...这可能看起来很愚蠢,但表中的每条记录都将比 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 手册在哪里?:)

于 2012-11-19T09:18:54.457 回答
10
delete from events where timestamp < NOW()

应该足够了。

于 2012-04-17T19:18:29.043 回答
2
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())

或者如果它是标准日期时间

DELETE FROM events WHERE timestamp < NOW()
于 2012-04-17T19:19:11.543 回答
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);
    }
于 2014-04-01T20:05:36.387 回答
-3
DELETE FROM table WHERE date < '2011-09-21 08:21:22';
于 2013-06-01T13:13:12.120 回答