MySQL Удаляет Записи Старше X Минут?
Я довольно долго искал и нашел несколько решений, которые в конечном итоге не сработали для меня, и не могу понять, почему.
У меня есть таблица со столбцом временных меток. Тип MySQL для этого столбца - "дата-время". Я вставляю в эту таблицу следующее из 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);
Может ли кто-нибудь пролить свет на то, что я делаю неправильно и почему это не работает должным образом?
Спасибо.
4 answers
Поскольку функция TIMESTAMP() является встроенной функцией, которая возвращает текущую отметку времени, ваш запрос никогда не вернет никаких результатов.
Попробуйте обернуть столбец обратными галочками, чтобы MySQL знал, что вы имеете в виду столбец, а не зарезервированное слово:
DELETE FROM adminLoginLog WHERE `timestamp` < (NOW() - INTERVAL 10 MINUTE);
timestamp
является зарезервированным ключевым словом в mysql. Чтобы использовать timestamp
в качестве имени поля, вы должны поместить его в обратные метки, как показано ниже.
`timestamp`
Если time_created - это временная метка unix (int), вы должны иметь возможность использовать что-то вроде этого:
DELETE FROM adminLoginLog WHERE `timestamp` < (UNIX_TIMESTAMP() - 600);
(600 секунд = 10 минут - очевидно)
В противном случае (если значение time_created равно метке времени mysql), вы можете попробовать следующее:
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)
Демо-версия
Я бы создал временную метку в php, а затем передал ее в ваш запрос mysql:
$date = new DateTime();
$date->modify("-10 minutes")
Ваш запрос верен, если у вас есть доступ к phpmyadmin, выполните команду в консоли SQL, которая предоставит вам дополнительную информацию.