Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ADD_MONTHS

📄字数 907
👁️阅读量 加载中...

功能描述

在日期 expr1 基础上增加 expr2 个整数月份。

提示

如果运算后的结果超过了该月天数所表示的最大范围,则该日期会被调整为该月的最后一天;否则,返回值的天数与 expr1 的天数相同。
例如:ADD_MONTHS('2018-12-31'::DATE, 2),结果被调整为:2019-02-28

语法格式

sql
ADD_MONTHS(expr1, expr2)

输入参数

  • expr1:起始日期,DATEDATETIMEDATETIME WITH TIME ZONE 类型,或可以隐式转换为上述类型的其他类型。
  • expr2:增加的月份单位,NUMERIC 类型,整数或任何可以隐式转换为整数的值;可以为负数,表示减去的月份。

提示

  • NULL 无具体的类型,当第一个参数为 NULL 时,会产生异常 E10100 候选函数出现多义性,需要手动为参数指定具体的形参类型,如:ADD_MONTHS(NULL::DATE, 1)
  • expr1 为动态参数(如预编译语句参数)或字符串类型(VARCHAR)时,服务端自动匹配参数类型,可使用 CAST()expr1 转换为期望的类型,如:ADD_MONTHS(CAST('2025-10-10' AS DATE), 1)

输出结果

  • 输出结果类型与第一个输入参数类型一致,任意输入参数 为 NULL 时,输出结果为 NULL

示例

sql
-- 在'2020-12-31 23:59:59'时间上增加 1.4 个月
SQL> SELECT ADD_MONTHS('2020-12-31 23:59:59', 1.4), ADD_MONTHS('2020-12-31 23:59:59', CAST(1.4 AS NUMERIC));

+--------------------------+--------------------------+
|          EXPR1           |          EXPR2           |
+--------------------------+--------------------------+
| 2021-01-31 23:59:59.000  | 2021-01-31 23:59:59.000  |
+--------------------------+--------------------------+

-- 在'2018-12-31'时间上时间上增加 1.5 个月
SQL> SELECT ADD_MONTHS('2018-12-31', 1.5), ADD_MONTHS('2018-12-31', CAST(1.5 AS NUMERIC));

+--------------------------+--------------------------+
|          EXPR1           |          EXPR2           |
+--------------------------+--------------------------+
| 2019-01-31 00:00:00.000  | 2019-02-28 00:00:00.000  |
+--------------------------+--------------------------+

-- 在'2018-4-30'时间上增加 1 个月和减少 2 个月
SQL> SELECT ADD_MONTHS('2018-4-30', 1), ADD_MONTHS('2018-4-30', -2);

+--------------------------+--------------------------+
|          EXPR1           |          EXPR2           |
+--------------------------+--------------------------+
| 2018-05-30 00:00:00.000  | 2018-02-28 00:00:00.000  |
+--------------------------+--------------------------+