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 |
+-----------------------------+