Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

DATEADD 函数

将日期或时间戳值增大指定的时间间隔。

语法

Copy
DATEADD( datepart, interval, {date|timestamp} )

此函数返回一个时间戳数据类型。

参数

datepart

此函数的运算所针对的日期部分(例如,年、月或日)。请参阅日期或时间戳函数的日期部分

interval

一个整数,它指定了要添加到目标表达式的时间间隔(例如,天数)。负整数表示减去该时间间隔。

日期|时间戳

日期或时间戳列,或隐式转换为日期或时间戳的表达式。日期或时间戳表达式必须包含指定的日期部分。

返回类型

TIMESTAMP

示例

向存在于 DATE 表中的 11 月的每个日期添加 30 天:

Copy
select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)

向一个文本日期值添加 18 个月:

Copy
select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

DATEADD 函数的默认列名称为 DATE_ADD。日期值的默认时间戳为 00:00:00

向未指定时间戳的日期值添加 30 分钟:

Copy
select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)

您可以书写日期部分的完整名称,也可以书写其缩写形式;在该示例中,m 表示分钟,而不是月。

使用说明

DATEADD(month, ...) 和 ADD_MONTHS 函数以不同的方式处理月末的日期。

  • ADD_MONTHS:如果将添加到的日期为该月的最后一天,则结果始终为结果月的最后一天,无论该月份的长度如何。例如,4 月 30 日加上 1 个月为 5 月 31 日:

    Copy
    select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
  • DATEADD:如果将添加到的日期要比结果月少几天,则结果将为结果月的对应日,而不是该月的最后一天。例如,4 月 30 日加上 1 个月为 5 月 30 日:

    Copy
    select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

当使用 dateadd(month, 12,…) 或 dateadd(year, 1, …) 时,DATEADD 函数将以不同的方式处理闰年日期 02-29。

Copy
select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00