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

DATEDIFF 函数

DATEDIFF 返回两个日期或时间表达式的日期部分的差值。

语法

Copy
DATEDIFF ( datepart, {date|timestamp}, {date|timestamp} )

参数

datepart

此函数的运算所针对的日期值的特定部分(例如,年、月或日)。有关更多信息,请参阅 日期或时间戳函数的日期部分

具体来说,DATEDIFF 确定两个表达式之间所跨越的 datepart boundaries 的数量。例如,如果您将计算两个日期(12-31-200801-01-2009)之间的年份的差值,则此函数将返回 1 年,尽管这两个日期仅相差一天。如果您将查找两个时间戳(01-01-2009 8:30:0001-01-2009 10:00:00)之间的小时的差值,则结果为 2 小时。

日期|时间戳

日期或时间戳列,或隐式转换为日期或时间戳的表达式。两个表达式都必须包含指定的日期部分。如果第二个日期或时间晚于第一个日期或时间,则结果为正值。如果第二个日期或时间早于第一个日期或时间,则结果为负值。

返回类型

BIGINT

示例

查找两个文本日期值之间的周数的差值:

Copy
select datediff(week,'2009-01-01','2009-12-31') as numweeks; numweeks ---------- 52 (1 row)

查找前一天日期和今日日期的文本值之间的刻钟数的差值。此示例假定当前日期为 2008 年 6 月 5 日。您可以书写日期部分的完整名称,也可以书写其缩写形式。DATEDIFF 函数的默认列名称为 DATE_DIFF。

Copy
select datediff(qtr, '1998-07-01', current_date); date_diff ----------- 40 (1 row)

此示例将 SALES 和 LISTING 表进行联接以计算清单 1000 - 1005 在挂牌多少天之后所有票均销售出去。这些清单的销售的最长等待时间为 15 天,最短等待时间为 1 天(0 天)。

Copy
select priceperticket, datediff(day, listtime, saletime) as wait from sales, listing where sales.listid = listing.listid and sales.listid between 1000 and 1005 order by wait desc, priceperticket desc; priceperticket | wait ---------------+------ 96.00 | 15 123.00 | 11 131.00 | 9 123.00 | 6 129.00 | 4 96.00 | 4 96.00 | 0 (7 rows)

此示例计算卖家等待所有票售出的平均小时数。

Copy
select avg(datediff(hours, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; avgwait --------- 465 (1 row)

本页内容: