ADD_MONTHS 函数 - Amazon Redshift

ADD_MONTHS 函数

ADD_MONTHS 会将指定的月数添加到日期或时间戳值或表达式中。DATEADD 函数提供了类似的功能。

语法

ADD_MONTHS( {date | timestamp}, integer)

参数

date | timestamp

数据类型为 DATETIMESTAMP 的列,或一个隐式计算结果为 DATETIMESTAMP 类型的表达式。如果日期是该月的最后一天,或者如果产生的月份较短,则函数在结果中返回该月的最后一天。对于其他日期,结果包含与日期表达式相同的日期编号。

integer

数据类型 INTEGER 的值。使用负数从日期中减去月份。

返回类型

TIMESTAMP

示例

以下查询使用 TRUNC 函数内的 ADD_MONTHS 函数。TRUNC 函数从 ADD_MONTHS 的结果中删除一天中的时间。ADD_MONTHS 函数会为 CALDATE 列中的每个值添加 12 个月。CALDATE 列中的值是日期。

select distinct trunc(add_months(caldate, 12)) as calplus12, trunc(caldate) as cal from date order by 1 asc; calplus12 | cal ------------+------------ 2009-01-01 | 2008-01-01 2009-01-02 | 2008-01-02 2009-01-03 | 2008-01-03 ... (365 rows)

以下示例使用 ADD_MONTHS 函数给时间戳 加上 1 个月。

select add_months('2008-01-01 05:07:30', 1); add_months --------------------- 2008-02-01 05:07:30

以下示例演示 ADD_MONTHS 函数在具有不同天数的月份的日期上运行时的行为。此示例说明该函数如何处理在 3 月 31 日的基础上再加上 1 个月以及在 4 月 30 日的基础上再加上 1 个月的情况。4 月有 30 天,所以在 3 月 31 日的基础上再加上 1 个月,结果是 4 月 30 日。5 月有 31 天,所以在 4 月 30 日的基础上再加上 1 个月,结果是 5 月 31 日。

select add_months('2008-03-31',1); add_months --------------------- 2008-04-30 00:00:00 select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00