Исходя из вашего примера, timestamp
значение '1558180800' имеет формат UNIX_TIMESTAMP
.NOW()
возвращает «ГГГГ-ММ-ДД чч: мм: сс».Так что, если напрямую перевести ваш запрос:
DELETE FROM roompasswords WHERE timestamp > NOW();
is equivalent to
DELETE FROM roompasswords WHERE timestamp > '2019-05-14 09:18:06';
Так что это не сработает, учитывая, что он не может найти это конкретное значение поля.Поэтому вам нужно изменить NOW()
на UNIX_TIMESTAMP
.Ниже приведен пример, который вы можете попробовать:
1) DELETE FROM roompasswords WHERE timestamp > UNIX_TIMESTAMP(NOW());
Обратите внимание, что NOW () возвращает текущую дату + время, поэтому, если вы также хотите указать время, вы можете сделать следующее:
2) DELETE FROM roompasswords WHERE timestamp > UNIX_TIMESTAMP('2019-05-14 00:00:00');
ИЛИ вы можете сначала получить значение UNIX_TIMESTAMP, а затем использовать его для запроса DELETE:
SELECT UNIX_TIMESTAMP('2019-05-14 00:00:00'); -- will return '1557763200'
-- then
DELETE FROM roompasswords WHERE timestamp > '1557763200';
Наконец, этот запрос также будет работать:
3) DELETE FROM roompasswords WHERE FROM_UNIXTIME(TIMESTAMP) > '2019-05-14 00:00:00';
or
DELETE FROM roompasswords WHERE FROM_UNIXTIME(TIMESTAMP) > NOW();