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

DATE_SUB

Вычитает из даты временной интервал.

MySQL 8.1
DATE_SUB(date, INTERVAL expr unit)

Параметры

dateDATE
Исходная дата или дата со временем
INTERVAL expr unitключевое слово
Вычитаемый интервал: количество expr и единица unit, например INTERVAL 1 MONTH
Значения:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH

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

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

Примеры

Десять дней до дня рождения

MySQL 8.1
SELECT member_name,
	birthday,
	DATE_SUB(birthday, INTERVAL 10 DAY) AS reminder_date
FROM FamilyMembers;
member_namebirthdayreminder_date
Headley Quincey1960-05-131960-05-03
Flavia Quincey1963-02-161963-02-06
Andie Quincey1983-06-051983-05-26
Lela Quincey1985-06-071985-05-28
Annie Quincey1988-04-101988-03-31
Ernest Forrest1961-09-111961-09-01
Constance Forrest1968-09-061968-08-27
Wednesday Addams2005-01-132005-01-03

Месяц назад от 31 марта

MySQL 8.1
SELECT DATE_SUB('2024-03-31', INTERVAL 1 MONTH) AS new_date;
new_date
2024-02-29

Составная единица интервала

MySQL 8.1
SELECT DATE_SUB('2022-06-16', INTERVAL '1 12' DAY_HOUR) AS new_date;
new_date
2022-06-14 12:00:00

Подробности

Вместо функции интервал можно прибавить или вычесть оператором: date + INTERVAL 7 DAY. В PostgreSQL такой функции нет, дату сдвигают тем же оператором, но интервал пишут строкой: 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'

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