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

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: Должно быть допустимым выражением даты или datetime.
  • 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 |
+-----------------------------+