跳到主要内容
版本:2.5

add_months

功能

在给定的日期(DATE、DATETIME)上增加或减少一个整数月 monthsmonths 可以是正数或负数,正数表示增加月份;负数表示减少月份。该函数与 months_add 功能相同。

返回值的日期部分与日期中指定的部分相同。如果对月的最后一天加减月份:

  • 如果返回月份的日期比输入月份的日期多,则日期部分相同,比如 select add_months('2022-02-28', 1) 返回 2022-03-28 00:00:00
  • 如果返回月份的日期比输入月份的日期少,将返回对应月份的最后一天,比如 select add_months('2022-01-31', 1); 返回 2022-02-28 00:00:00

与 Oralce 的区别:在 Oracle 中,如果对月的最后一天加减月份,返回的日期都是对应月份的最后一天。

如果给定的日期无效或者为 NULL,则返回 NULL。

语法

ADD_MONTHS(date, months);

参数说明

  • date: 给定的日期,可以是 DATE 或 DATETIME 类型。
  • months: 要增加的整数月。INT 类型,可以是正数或负数。

返回值说明

返回值的数据类型为 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 |
+-----------------------------+