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, которая даст вам дополнительную информацию.