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