类别:

日期和时间函数

ADD_MONTHS

在日期或时间戳上添加或减去指定的月数,保留月末信息。

语法

ADD_MONTHS( <date_or_timestamp_expr> , <num_months_expr> )
Copy

实参

必填:

date_or_timestamp_expr

这是您要向其中添加指定月数的日期或时间戳表达式。

num_months_expr

这是您要添加的月数。这应该是一个整数。它可能是正数,也可能是负数。如果该值是非整型数值(例如,FLOAT),则该值将四舍五入为最接近的整数。

返回

返回值的数据类型与第一个参数的数据类型相同。例如,如果输入是 DATE,则输出是 DATE。如果输入是 TIMESTAMP_NTZ,则输出是 TIMESTAMP_NTZ

使用说明

  • ADD_MONTHS 返回的结果与带 MONTH 组件的 DATEADD 的结果略有不同:

    • 对于 ADD_MONTHS 和 DATEADD,如果结果月份的天数少于原始日期,则当月的结果日是结果月份的最后一天。

    • 仅限于 ADD_MONTHS,如果原始日期是当月的最后一天,当月的结果日将是结果月份的最后一天。

  • num_months_expr 可以是正整数或负数整,分别用于添加或减少月数。

示例

为某日期添加 2 个月,并将该日期转换为没有时区的时间戳:

SELECT ADD_MONTHS('2016-05-15'::timestamp_ntz, 2) AS RESULT;
+-------------------------+
| RESULT                  |
|-------------------------|
| 2016-07-15 00:00:00.000 |
+-------------------------+
Copy

演示月末信息的保存:

  • 在 2016 年(闰年)2 月的最后一天增加一个月。

  • 从 2016 年 5 月的最后一天减去一个月。

    SELECT ADD_MONTHS('2016-02-29'::date, 1) AS RESULT;
    +------------+
    | RESULT     |
    |------------|
    | 2016-03-31 |
    +------------+
    
    Copy
    SELECT ADD_MONTHS('2016-05-31'::date, -1) AS RESULT;
    +------------+
    | RESULT     |
    |------------|
    | 2016-04-30 |
    +------------+
    
    Copy
语言: 中文