Перейти к основному содержимому

date_sub,subdate

Описание

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

Синтаксис

DATETIME DATE_SUB(DATETIME|DATE date,INTERVAL expr type)

Параметры

  • date: Должно быть допустимым выражением DATE или DATETIME.
  • expr: временной интервал, который вы хотите вычесть. Должен быть типа INT.
  • type: единица временного интервала. Может быть установлен только в одно из следующих значений: YEAR, QUARTER, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND (начиная с версии 1.5.0) и MICROSECOND (начиная с версии 1.5.0).

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

Возвращает значение DATETIME. Если дата не существует, например 2020-02-30, или если дата не является значением DATE или DATETIME, возвращается NULL.

Примеры

select date_sub('2010-11-30 23:59:59', INTERVAL 2 DAY);
+-------------------------------------------------+
| date_sub('2010-11-30 23:59:59', INTERVAL 2 DAY) |
+-------------------------------------------------+
| 2010-11-28 23:59:59 |
+-------------------------------------------------+

select date_sub('2010-11-30', INTERVAL 2 hour);
+-----------------------------------------+
| date_sub('2010-11-30', INTERVAL 2 HOUR) |
+-----------------------------------------+
| 2010-11-29 22:00:00 |
+-----------------------------------------+

select date_sub('2010-02-30', INTERVAL 2 DAY);
+----------------------------------------+
| date_sub('2010-02-30', INTERVAL 2 DAY) |
+----------------------------------------+
| NULL |
+----------------------------------------+

select date_sub('2010-11-30 23:59:59', INTERVAL 2 QUARTER);
+-----------------------------------------------------+
| date_sub('2010-11-30 23:59:59', INTERVAL 2 QUARTER) |
+-----------------------------------------------------+
| 2010-05-30 23:59:59 |
+-----------------------------------------------------+

select subdate('2010-11-30 23:59:59', INTERVAL 2 millisecond);
+--------------------------------------------------------+
| subdate('2010-11-30 23:59:59', INTERVAL 2 MILLISECOND) |
+--------------------------------------------------------+
| 2010-11-30 23:59:58.998000 |
+--------------------------------------------------------+

select date_sub('2010-11-30 23:59:59', INTERVAL 2 microsecond);
+---------------------------------------------------------+
| date_sub('2010-11-30 23:59:59', INTERVAL 2 MICROSECOND) |
+---------------------------------------------------------+
| 2010-11-30 23:59:58.999998 |
+---------------------------------------------------------+