Справочник по функциям

INTERVAL

Конструкция SQL

Прибавляет к дате временной интервал или вычитает его.

MySQL 8.1
date {+ | -} INTERVAL expr unit

Параметры

dateDATE
Исходная дата или дата со временем
exprINT
Количество единиц; для составной единицы — строка, например '1:30'
unitключевое слово
Единица интервала
Значения:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH

Возвращаемое значение

Дата, если к дате прибавляются дни или более крупные единицы, иначе дата со временем; если такого дня в месяце нет, берётся последний день месяца

Примеры

Месяц к 31 января

MySQL 8.1
SELECT '2024-01-31' + INTERVAL 1 MONTH AS next_month;
next_month
2024-02-29

Срок оплаты через 30 дней

MySQL 8.1
SELECT payment_id,
	date,
	date + INTERVAL 30 DAY AS due_date
FROM Payments
LIMIT 5;
payment_iddatedue_date
12005-02-122005-03-14
22005-03-232005-04-22
32005-05-142005-06-13
42005-07-222005-08-21
52005-07-262005-08-25

Интервал слева и минус

MySQL 8.1
SELECT INTERVAL 1 DAY + '2024-12-31' AS new_year,
	'2024-03-08 14:30:00' - INTERVAL '1:30' HOUR_MINUTE AS earlier;
new_yearearlier
2025-01-012024-03-08 13:00:00

Подробности

INTERVAL — часть выражения с датой, а не отдельное значение: SELECT INTERVAL 1 DAY — ошибка. Запись date + INTERVAL 7 DAY равносильна DATE_ADD(date, INTERVAL 7 DAY), а интервал можно писать и слева от плюса. Вычитать дату из интервала нельзя.

Без интервала число прибавляется не к дате, а к числу ГГГГММДД: CURDATE() + 1 — не завтрашний день. В PostgreSQL INTERVAL — тип данных, и значение пишут строкой: date + INTERVAL '7 days'.

Составная единицаФормат строки exprПример
SECOND_MICROSECONDсекунды.микросекунды'10.000500'
MINUTE_MICROSECONDминуты:секунды.микросекунды'5:10.000500'
MINUTE_SECONDминуты:секунды'5:10'
HOUR_MICROSECONDчасы:минуты:секунды.микросекунды'2:05:10.000500'
HOUR_SECONDчасы:минуты:секунды'2:05:10'
HOUR_MINUTEчасы:минуты'1:30'
DAY_MICROSECONDдни часы:минуты:секунды.микросекунды'1 2:05:10.000500'
DAY_SECONDдни часы:минуты:секунды'1 2:05:10'
DAY_MINUTEдни часы:минуты'1 2:05'
DAY_HOURдни часы'1 12'
YEAR_MONTHгоды-месяцы'1-6'

Смотрите также

Где изучить