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;Срок оплаты через 30 дней
MySQL 8.1
SELECT payment_id,
date,
date + INTERVAL 30 DAY AS due_date
FROM Payments
LIMIT 5;Интервал слева и минус
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;Подробности
INTERVAL — часть выражения с датой, а не отдельное значение: SELECT INTERVAL 1 DAY — ошибка. Запись date + INTERVAL 7 DAY равносильна DATE_ADD(date, INTERVAL 7 DAY), а интервал можно писать и слева от плюса. Вычитать дату из интервала нельзя.
Без интервала число прибавляется не к дате, а к числу ГГГГММДД: CURDATE() + 1 — не завтрашний день. В PostgreSQL INTERVAL — тип данных, и значение пишут строкой: date + INTERVAL '7 days'.