跳到主要内容
版本: 最新版本-3.5

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