add_months
功能
在给定的日期(DATE、DATETIME)上增加或减少一个整数月 months
。months
可以是正数或负数,正数表示增加月份;负数表示减少月份。该函数与 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 |
+-----------------------------+