INTERVAL - прибавить / отнять промежуток времени
Команда INTERVAL
позволяет прибавлять к дате и отнимать от
нее определенные промежутки времени.
Прибавление даты:
SELECT дата + INTERVAL что_прибавить FROM `имя_таблицы`; -- возможно применение операторов
Отнимание даты:
SELECT дата - INTERVAL что_отнять FROM `имя_таблицы`; -- возможно применение операторов
После команды INTERVAL
можно указывать определенную
часть даты (день, месяц или год и тп), к примеру, так INTERVAL 1 DAY
или INTERVAL 3 MONTH
, или сразу несколько частей.
В этом случае значения даты берутся в кавычки,
пример: давайте прибавим 1 год и 3 месяца -
это будет выглядеть так: INTERVAL '1-3' YEAR_MONTH
.
Мы указываем, что хотим год и месяц (вот так: YEAR_MONTH
),
и перед этим в кавычках пишем сначала значение для года, потом значение для месяца.
Между ними ставим разделитель (он может быть абсолютно любым).
Смотрите список возможных комбинаций (разделители указаны для примера, они могут быть любыми):
Значение |
Ожидаемый формат |
---|---|
SECOND |
секунды |
MINUTE |
минуты |
HOUR |
часы |
DAY |
дни |
MONTH |
месяцы |
YEAR |
года |
MINUTE_SECOND |
"минуты:секунды" |
HOUR_MINUTE |
"часы:минуты" |
DAY_HOUR |
"дни часы" |
YEAR_MONTH |
"года-месяцы" |
HOUR_SECOND |
"часы:минуты:секунды" |
DAY_MINUTE |
"дни часы:минуты" |
DAY_SECOND |
"дни часы:минуты:секунды" |
В данном примере к дате прибавляется 1 день:
SELECT *, date + INTERVAL 1 DAY as new_date FROM `workers`;
В данном примере от даты отнимается 1 день:
SELECT *, date - INTERVAL 1 DAY as new_date FROM `workers`;
В данном примере к дате прибавляется 1 год и 2 месяца:
SELECT *, date + INTERVAL "1-2" YEAR_MONTH as new_date FROM `workers`;
В данном примере к дате прибавляется 1 год, 2 месяца и 1 день:
SELECT *, date + INTERVAL 1 YEAR + INTERVAL 2 MONTH + INTERVAL 1 DAY as new_date FROM `workers`;
Запрос можно переписать таким образом:
SELECT *, date + INTERVAL "1 2" YEAR_MONTH + INTERVAL 1 DAY as new_date FROM `workers`;
В данном примере к дате прибавляется 1 год, отнимаются 2 месяца и прибавляется 1 день:
SELECT *, date + INTERVAL 1 YEAR - INTERVAL 2 MONTH + INTERVAL 1 DAY as new_date FROM `workers`;
Разделитель
Разделитель в запросе не имеет значения. Он может быть любым символом:
SELECT *, date + INTERVAL "1:2" YEAR_MONTH as new_date FROM `workers`;
Можно использовать даже несколько символов:
SELECT *, date + INTERVAL "1:::2" YEAR_MONTH as new_date FROM `workers`;
Можно использовать и пробел:
SELECT *, date + INTERVAL "1 2" YEAR_MONTH as new_date FROM `workers`;