EXTRACT 函数 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

EXTRACT 函数

EXTRACT 函数返回 TIMESTAMP、TIMESTAMPTZ、TIME 或 TIMETZ 值中的日期或时间部分。示例包括时间戳中的日、月、年、小时、分钟、秒、毫秒或微秒。

语法

EXTRACT(datepart FROM source)

参数

datepart

要提取的日期或时间的子字段,例如日、月、年、小时、分钟、毫秒或微秒。有关可能的值,请参阅日期或时间戳函数的日期部分

计算结果为 TIMESTAMP、TIMESTAMPTZ、TIME 或 TIMETZ 数据类型的列或表达式。

返回类型

如果 source 值的计算结果为数据类型 TIMESTAMP、TIME 或 TIMETZ,则为 INTEGER。

如果 source 值的计算结果为数据类型 TIMESTAMPTZ,则为 DOUBLE PRECISION。

TIMESTAMP 示例

以下示例确定支付价格为 10000 美元或更高的销售周数。

select salesid, extract(week from saletime) as weeknum from sales where pricepaid > 9999 order by 2; salesid | weeknum --------+--------- 159073 | 6 160318 | 8 161723 | 26

以下示例从文本时间戳值返回分钟值。

select extract(minute from timestamp '2009-09-09 12:08:43'); date_part --

以下示例从文本时间戳值返回毫秒值。

select extract(ms from timestamp '2009-09-09 12:08:43.101'); date_part ----------- 101

TIMESTAMPZ 示例

以下示例从文本 timestamptz 值返回年份值。

select extract(year from timestamptz '1.12.1997 07:37:16.00 PST'); date_part ----------- 1997

TIME 示例

下面的示例表 TIME_TEST 具有一个列 TIME_VAL(类型 TIME),其中插入了三个值。

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

以下示例从每个 time_val 中提取分钟数。

select extract(minute from time_val) as minutes from time_test; minutes ----------- 0 0 58

以下示例从每个 time_val 中提取小时数。

select extract(hour from time_val) as hours from time_test; hours ----------- 20 0 0

以下示例从文本值中提取毫秒。

select extract(ms from time '18:25:33.123456'); date_part ----------- 123

TIMETZ 示例

下面的示例表 TIMETZ_TEST 具有一个列 TIMETZ_VAL(类型 TIMETZ),其中插入了三个值。

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

以下示例从每个 timetz_val 中提取小时数。

select extract(hour from timetz_val) as hours from time_test; hours ----------- 4 0 5

以下示例从文本值中提取毫秒。在处理提取之前,文本不会转换为 UTC。

select extract(ms from timetz '18:25:33.123456 EST'); date_part ----------- 123

以下示例从文本 timetz 值返回与 UTC 的时区偏移小时数。

select extract(timezone_hour from timetz '1.12.1997 07:37:16.00 PDT'); date_part ----------- -7