Справочники, инструменты, документация

SQL: Удаляем старые записи

Как можно при помощи запроса, удалять старые записи из базы данных MySQL. В этом нет ничего сложного. Естественно в записи должна храниться дата ее публикации. Сам запрос к базе данных будет выглядеть следующим образом...
DELETE FROM table_name WHERE published_date < '0000-00-00';

где 0000-00-00 дата, до которой будут удалены все записи.

Чтобы вычислить дату, до которой все записи будут считаться «старыми» мы используем две функции PHP работающие с датой/временем:

  • time – возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) до текущего времени.
  • date – форматирует вывод системной даты/времени.

Функция date одним из параметров принимает количество секунд прошедших с 1 января 1970 года и формирует дату по определенному шаблону.

Исходя из этого, для получения необходимой нам даты используем следующий код:

// Количество прошедших дней, за которые не удалять записи

$days = 30;
$seconds = time() – $days * 24 * 60 * 60;
$date = date('Y-m-d', $seconds);

Полученную дату добавляем в запрос:

$query = "DELETE FROM table_name WHERE published_date < '" .$date. "' ";

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