Удалить записи старше 24 часов или 1 дня на основе метки времени - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь написать запрос MySQL для удаления записей старше 24 часов.

Используемый мной оператор SELECT sql ниже

SELECT * FROM Request WHERE 
timeStamp <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))

Таблица содержит много записей старше1 день, но результат этого sql-запроса пуст.Также не отображается сообщение об ошибке.

Структура поля отметки времени

Name: timeSatamp
Type: timestamp 
Default: CURRENT_TIMESTAMP

Может ли кто-нибудь помочь мне обнаружить ошибку в этом утверждении?

Спасибо взаранее!

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Ваш запрос должен быть таким:

SELECT * from Request where FROM_UNIXTIME(timeStamp) <= (NOW() - INTERVAL 1 DAY);
0 голосов
/ 03 октября 2018

Вам не нужно FROM_UNIXTIME(), так что это будет делать то, что вы хотите

SELECT * FROM `ts` WHERE timeStamp <= DATE_SUB(NOW(), INTERVAL 1 DAY)
0 голосов
/ 03 октября 2018

вы можете использовать DATEDIFF вместо сравнения с двумя датами.

SELECT * FROM Request WHERE DATEDIFF(timestamp, NOW())>=1;

DATEDIFF возвращает количество дней между двумя датой / отметкой времени.

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff

...