ADD_MONTHS
📄字数 907
👁️阅读量 加载中...
功能描述
在日期 expr1 基础上增加 expr2 个整数月份。
提示
如果运算后的结果超过了该月天数所表示的最大范围,则该日期会被调整为该月的最后一天;否则,返回值的天数与 expr1 的天数相同。
例如:ADD_MONTHS('2018-12-31'::DATE, 2),结果被调整为:2019-02-28。
语法格式
sql
ADD_MONTHS(expr1, expr2)输入参数
expr1:起始日期,DATE、DATETIME或DATETIME 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 |
+--------------------------+--------------------------+