Процедура удаления всех строк в столбце старше 30 дней

#mysql #sql-delete

#mysql #sql-удалить

Вопрос:

Может кто-нибудь, пожалуйста, помочь мне написать процедуру / функцию для удаления строк старше 30 дней из столбца с именем prs_date из всех таблиц в моей базе данных в mysql?

Комментарии:

1. Что вы пробовали до сих пор? Почему у вас не получилось? честно говоря, это не так сложно….

2. Это мешает вам искать в Google? Если вы загуглите свой заголовок, вы сможете сделать запрос в ответах с первыми 2 ссылками самостоятельно. Таким образом, у вас уже было бы что-то вместо ничего.

Ответ №1:

Посмотрите на DATEDIFF оператор и объедините его с CURDATE()

 DELETE FROM myTable WHERE DATEDIFF(CURDATE(), prs_date) > 30;
  

Комментарии:

1. здесь я должен выбрать определенный столбец из всех таблиц

2. О, извините, пропустил часть с. all tables

3. @Marcus там будет много таблиц, так что будет сложно искать и записывать каждое имя таблицы, поэтому я запрашиваю функцию или процедуру.

4. я надеюсь, что это легко с созданием процедуры

5. Можно ли вручную указывать каждую таблицу, содержащую prs_date? Иначе это может стать сложным.

Ответ №2:

этот запрос может помочь

 DELETE FROM sometable WHERE TO_DAYS(NOW()) - TO_DAYS(prs_date) <= 30;
  

Комментарии:

1. мне нужно написать процедуру / функцию

2. он удаляет, но мне это нужно для всех таблиц в моей базе данных, которые содержат столбец prs_date