Перейти к основному содержимому
Версия: 2.0.x

add_months

Добавляет указанное количество месяцев к заданной дате (DATE или DATETIME). Функция months_add предоставляет аналогичный функционал.

Компонент дня в результирующем месяце остаётся таким же, как указано в date, за исключением случаев, когда в результирующем месяце меньше дней, чем компонент дня заданной даты — тогда день будет последним днём результирующего месяца. Например, select add_months('2022-01-31', 1); возвращает 2022-02-28 00:00:00. Если в результирующем месяце больше дней, чем компонент дня заданной даты, результат имеет тот же компонент дня, что и date. Например, select add_months('2022-02-28', 1) возвращает 2022-03-28 00:00:00.

Отличие от Oracle: в Oracle, если date является последним днём месяца, то результат будет последним днём результирующего месяца.

Возвращает NULL, если передана недопустимая дата или аргумент NULL.

Синтаксис

ADD_MONTH(date, months)

Параметры

  • date: должно быть допустимым выражением даты или даты-времени.
  • months: количество месяцев, которые вы хотите добавить. Должно быть целым числом. Положительное целое число добавляет месяцы к date. Отрицательное целое число вычитает месяцы из date.

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

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

Если дата является значением DATE, оно будет преобразовано в значение DATETIME.

Примеры

> select add_months('2022-01-01', 2);
+-----------------------------+
| add_months('2022-01-01', 2) |
+-----------------------------+
| 2022-03-01 00:00:00 |
+-----------------------------+

> select add_months('2022-01-01', -5);
+------------------------------+
| add_months('2022-01-01', -5) |
+------------------------------+
| 2021-08-01 00:00:00 |
+------------------------------+

> select add_months('2022-01-31', 1);
+-----------------------------+
| add_months('2022-01-31', 1) |
+-----------------------------+
| 2022-02-28 00:00:00 |
+-----------------------------+

> select add_months('2022-01-31 17:01:02', -2);
+---------------------------------------+
| add_months('2022-01-31 17:01:02', -2) |
+---------------------------------------+
| 2021-11-30 17:01:02 |
+---------------------------------------+

> select add_months('2022-02-28', 1);
+-----------------------------+
| add_months('2022-02-28', 1) |
+-----------------------------+
| 2022-03-28 00:00:00 |
+-----------------------------+