Вычитание и добавление периода к дате

28.08.2013
Иногда бывает необходимо подсчитать какую либо статистику за определённый период времени, например количество комментариев за последние 7 дней.

ADD SUB

Итак, начнём сразу с примера, давайте выберем из таблицы comments, все комментарии добавленные за последние 7 дней.

Тут всё просто, нам поможет функция DATE_SUB(), она принимает 2 параметра:

  • дату от которой будем вычитать;
  • количество дней/недель/месяцев и т.д. вычитаем из этой даты.

Т.е. в нашем варианте итоговый запрос получится следующего вида:

SELECT * FROM `comments` WHERE `created` >= DATE_SUB(NOW(), INTERVAL 7 DAY)

или
SELECT * FROM `comments` WHERE `created` >= DATE_SUB(NOW(), INTERVAL 1 WEEK)

Однако, тут мы получим результат с точностью до секунды. Т.е. так мы найдём комментарии добавленные 7 суток назад с учётом времени, если нам важна только дата, то немного изменим итоговый запрос:

SELECT * FROM `comments` WHERE `created` >= date(DATE_SUB(NOW(), INTERVAL 7 DAY))

Аналогично, для прибавления какого либо периода, используется функция DATE_ADD()