В MySQL можете да използвате DATE_SUB() функция за изваждане на определен период от време от дата. Например, можете да го използвате, за да извадите 7 дни от дадена дата. Можете да укажете дали да изваждате дни, седмици, месеци, тримесечия, години и т.н. Можете също да извадите времева стойност, като секунди, микросекунди и т.н.
Тази функция е подобна на DATE_ADD() , с изключение на това, че изважда от дата, вместо да добавя към нея.
Синтаксис
Синтаксисът е така:
DATE_SUB(date,INTERVAL expr unit)
Пример 1 – Основна употреба
Ето пример за употреба.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result; Резултат:
+------------+ | Result | +------------+ | 2021-05-02 | +------------+
Този пример изважда 5 дни от датата, предоставена от първия аргумент.
Пример 2 – Други единици за дата
Можете да посочите мерните единици в дни, седмици, месеци, години и т.н. Ето някои примери.
SELECT
'2021-05-07' AS 'Start Date',
DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks',
DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months',
DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters',
DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Резултат:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 | +------------+------------+------------+-------------+------------+
Пример 3 – Времеви единици
Можете също да извадите единици за време от стойност на дата/час. Ето един пример.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Резултат:
+---------------------+ | Result | +---------------------+ | 2021-05-07 05:00:00 | +---------------------+
И можете да посочите няколко единици едновременно. Например, можете да посочите часове и минути. Като това.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Резултат:
+---------------------+ | Result | +---------------------+ | 2021-05-07 08:30:00 | +---------------------+
Очаквани стойности
Следващата таблица показва валидните стойности на единици и техния очакван формат.
unit Стойност | Очакван expr Формат |
|---|---|
| МИКРОСЕКУНДА | МИКРОСЕКУНДИ |
| ВТОРА | СЕКУНДИ |
| МИНУТА | МИНУТИ |
| ЧАС | ЧАСА |
| ДЕН | ДНИ |
| СЕДМИЦА | СЕДМИЦИ |
| МЕСЕЦ | МЕСЕЦИ |
| Квартал | ЧЕТВЕРТИРИ |
| ГОДИНА | ГОДИНИ |
| SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
| MINUTE_MICROSECOND | ‘MINUTES:SECONDS.MICROSECONDS’ |
| MINUTE_SECOND | „МИНУТИ:СЕКУНДИ“ |
| HOUR_MICROSECOND | „ЧАСОВЕ:МИНУТИ:СЕКУНДИ.МИКРОСЕКУНДИ“ |
| HOUR_SECOND | „ЧАСОВЕ:МИНУТИ:СЕКУНДИ“ |
| HOUR_MINUTE | „ЧАСОВЕ:МИНУТИ“ |
| DAY_MICROSECOND | ‘ДНИ ЧАСОВЕ:МИНУТИ:СЕКУНДИ.МИКРОСЕКУНДИ’ |
| DAY_SECOND | „ДНИ ЧАСОВЕ:МИНУТИ:СЕКУНДИ“ |
| DAY_MINUTE | „ДНИ ЧАСА:МИНУТИ“ |
| DAY_HOUR | „ДНИ ЧАСА“ |
| YEAR_MONTH | „ГОДИНИ-МЕСЕЦИ“ |
Можете също да използвате SUBDATE() функция, за да направи същото (това е синоним на DATE_SUB() функция при използване на същия синтаксис).
В допълнение, синтаксисът на SUBDATE() има втора форма, която е стенографски метод за изваждане на определен брой дни от дата. За повече информация вижте SUBDATE() Примери в MySQL.