В MySQL можете да използвате SUBDATE()
функция за изваждане на определен период от време от дата. Например, можете да го използвате, за да извадите 10 дни от дадена дата. Можете да укажете дали да изваждате дни, седмици, месеци, тримесечия, години и т.н. Можете също да извадите времева стойност, като секунди, микросекунди и т.н.
Когато използвате първия синтаксис, изброен по-долу, SUBDATE()
функцията е синоним на DATE_SUB()
функция (подобно на това как ADDDATE()
е синоним на DATE_ADD()
когато използвате същия синтаксис).
Синтаксис
Можете да използвате тази функция по следните два начина:
SUBDATE(date,INTERVAL expr unit)
Или
SUBDATE(expr,days)
Пример 1 – Първият синтаксис
Ето пример за използване на първата форма на синтаксиса.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Резултат:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Този пример изважда 2 дни от датата, предоставена от първия аргумент.
Пример 2 – Вторият синтаксис
Този пример може да бъде пренаписан по следния начин:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Резултат:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Това използва втората форма на синтаксиса. Вторият аргумент е цяло число, което представлява колко дни трябва да бъдат извадени от датата, предоставена от първия аргумент.
Както бе споменато, SUBDATE()
е синоним на DATE_SUB()
, но само когато се използва първият синтаксис. Вторият синтаксис е достъпен само в SUBDATE()
.
Пример 3 – Други единици за дата
Едно от предимствата на първата форма на синтаксиса е, че можете да укажете дали да изваждате дни, седмици, месеци, години и т.н. Ето някои примери.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Резултат:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Пример 4 – Времеви единици
Можете също да използвате SUBDATE()
за изваждане на единици за време от стойност на дата/час. Ето един пример.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Резултат:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00: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 | „ГОДИНИ-МЕСЕЦИ“ |