Попытка создать событие в phpmyadmin, где удаляются записи старше 5 дней - PullRequest
0 голосов
/ 08 мая 2019

Я писал запрос на удаление любой строки с датой публикации более 5 дней назад.Формат postDate - дата ('Ymd H: i: s').

При отладке я просто попытался удалить все строки в таблице, которая работала, и удалял всю таблицу каждые 10 секунд.Но при добавлении остальной части оператора кажется, что он не работает, когда я использую функцию «getdate ()».

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

ON SCHEDULE 
EVERY 10 SECOND 
ON COMPLETION NOT PRESERVE ENABLE 
DO 
DELETE FROM posts WHERE postDate < DATEADD(dd,1,GETDATE())

Никакие записи в таблице не удаляются, даже если я это сделаю

DELETE FROM posts WHERE postDate != DATEADD(dd,1,GETDATE())

Записи удаляются только тогда, когда выписан оператор:

DELETE FROM posts

1 Ответ

0 голосов
/ 09 мая 2019

Если я не ошибаюсь ...

Это удаление удалит все, поскольку вы включаете все сообщения, созданные до завтра, поэтому я думаю, что это означает, что все сообщения.

DELETE FROM posts WHERE postDate < DATEADD(dd,1,GETDATE())

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

DELETE FROM posts WHERE postDate != DATEADD(dd,1,GETDATE())

Это удаление удаляет всю таблицу

DELETE FROM posts

Я рекомендую вам изменить DATEADD таким образом, чтобы он соответствовал вашим требованиям («чтобы удалить любую строку с датой публикации более 5 дней назад»):

DATE_ADD(date, INTERVAL -5 day)
...