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;Месяц назад от 31 марта
MySQL 8.1
SELECT DATE_SUB('2024-03-31', INTERVAL 1 MONTH) AS new_date;Составная единица интервала
MySQL 8.1
SELECT DATE_SUB('2022-06-16', INTERVAL '1 12' DAY_HOUR) AS new_date;Подробности
Вместо функции интервал можно прибавить или вычесть оператором: date + INTERVAL 7 DAY. В PostgreSQL такой функции нет, дату сдвигают тем же оператором, но интервал пишут строкой: date + INTERVAL '7 days'.