У меня есть таблица, в которой хранятся ревизии определенных наборов данных (т. Е. Редактирование во времени, если хотите). Дата пересмотра неимитативно сохраняется как поле datetime
с именем revision
.
Каждая новая редакция принимается ежедневно, в полночь.
Если эту таблицу оставить заполненной, для каждого дня будет набор строк, где каждый набор строк будет иметь одно и то же поле revision
datetime, например 2010-10-31 00:00:00
.
Я хотел бы реализовать хранимую процедуру как задание, которое по существу выполняется ежедневно и очищает количество ревизий в этой таблице на основе критериев, аналогичных тому, как функции Time Machine работают в OS X. А именно, ревизии в хранится должно быть:
- одна редакция каждый день на прошлой неделе (начиная с еженедельной редакции ниже)
- одна редакция каждую неделю за каждую неделю после этого (полночная редакция утреннего понедельника)
- одна ревизия каждый месяц для ревизий старше года (полуночная ревизия первого дня месяца)
Так, например, сейчас я ожидаю увидеть следующие ревизии:
- 2010-10-30 (ежедневно)
- 2010-10-29 (ежедневно)
- 2010-10-28 (ежедневно)
- 2010-10-27 (ежедневно)
- 2010-10-26 (ежедневно)
- 2010-10-25 (ежедневно / еженедельно)
- 2010-10-18 (еженедельно)
- 2010-10-11 (еженедельно)
- 2010-10-04 (еженедельно)
- 2010-09-27 (еженедельно)
- ...
Это, конечно, с учетом того, что моему набору данных еще не год.
Итак, что является лучшим и кратким DELETE FROM
для достижения этой цели? Спасибо!