Запрос MySQL для удаления строк, отметка времени которых старше текущей метки времени

Я ищу запрос, который может удалить все строки из таблицы в базе данных, где метка времени старше текущей даты/времени или текущей метки времени.

был бы очень признателен за помощь здесь срочно!

вот запрос, который я использую, но, как я думал, он не работает:

delete from events where timestamp<CURRENT_TIMESTAMP{);

5 ответов


delete from events where timestamp < NOW()

должно быть достаточно.


Хм... Это может показаться глупым, но каждая запись в таблице будет старше Now (), так как Now() вычисляется во время обработки запроса. Если вы хотите удалить запись, которая старше другой записи, то вы не хотите использовать Now(), но метку времени из записи, с которой вы сравниваете остальные. Или, если вы хотите удалить записи, которые старше определенного момента времени, вам нужно вычислить метку времени,которую вы хотите использовать для сравнения. Например, чтобы удалить записи старше 10 минут, вы можете использовать следующее:

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)

или для удаления записей, которым более суток:

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)

для определенных моментов времени (например, окт. 12th, 2012 в 4: 15: 00 GMT), есть способ сделать это, но синтаксис ускользает от меня, прямо сейчас. Где мое руководство MySQL? :)


DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())

или если это стандартное datetime

DELETE FROM events WHERE timestamp < NOW()

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);
    }

DELETE FROM table WHERE date < '2011-09-21 08:21:22';