MySQL Удаляет записи старше X минут?

Я искал совсем немного и нашел несколько решений, которые не закончили работать для меня и не могут понять, почему.

У меня есть таблица со столбцом timestamp. Тип MySQL для этого столбца - "datetime". Я вставляю в эту таблицу следующее из PHP.

date('Y-m-d H:i:s')

Входит, что похоже на правильное значение для даты даты MySQL.

2012-06-28 15:31:46

Я хочу использовать этот столбец для удаления строк, которые старше, например, 10 минут. Я выполняю следующий запрос, но он не работает. Он влияет на 0 строк.

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

Может ли кто-нибудь пролить свет на то, что я делаю неправильно, и почему он не работает должным образом?

Спасибо.

Ответ 1

Так как TIMESTAMP() является встроенной функцией, которая возвращает текущую метку времени, ваш запрос никогда не вернет никаких результатов.

Попробуйте обернуть столбец в обратном тике, чтобы MySQL знал, что вы имеете в виду столбец, а не зарезервированное слово:

DELETE FROM adminLoginLog WHERE `timestamp` < (NOW() - INTERVAL 10 MINUTE);

Ответ 2

timestamp - зарезервированное ключевое слово в mysql. Чтобы использовать timestamp в качестве имени поля, вы должны поместить его в обратные ссылки, как показано ниже.

`timestamp`

Если time_created является unix timestamp (int), вы должны использовать что-то вроде этого:

DELETE FROM adminLoginLog WHERE `timestamp` < (UNIX_TIMESTAMP() - 600);

(600 секунд = 10 минут - очевидно)

В противном случае (если time_created mysql timestamp), вы можете попробовать следующее:

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

Обновление 1

DELETE FROM adminLoginLog WHERE `timestamp` < DATE_SUB( CURRENT_TIME(), INTERVAL 10 MINUTE)

Обновление 2

DELETE FROM adminLoginLog WHERE `timestamp` < DATE_SUB( NOW(), INTERVAL 10 MINUTE)

Демо

Ответ 3

Я бы создал timestamp в php, а затем передал его в ваш mysql-запрос:

$date = new DateTime();
$date->modify("-10 minutes")

Ответ 4

Ваш запрос верен, если у вас есть доступ к phpmyadmin, выполните команду в консоли SQL, которая даст вам дополнительную информацию.