EXTRACT 函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

EXTRACT 函數

EXTRACT 函數會從 TIMESTAMP 值或表達式、TIMETZ 或 TIMETZ 傳回日期或時間部分,例如日、月或年、小時、分、秒、毫秒或微秒。

Syntax (語法)

EXTRACT ( datepart FROM { TIMESTAMP 'literal' | timestamp | time | timetz } )

引數

datepart

對於可能的值,請參閱 日期或時間戳函數的日期部分

常值

時間戳記值,包括在單引號中,且前有 TIMESTAMP 關鍵字。

時間戳||時間

時間戳記、時間標記、TIMESTAMPTZ、TIMEZ 欄或表達式會隱性轉換為時間戳記、含時區、時間或時間 TIMEZ 的時間戳記。

傳回類型

如果參數為時間戳記、時間或 TIMETZ,則為 INTEGER

如果引數為 TIMESTAMPTZ,則為 DOUBLE PRECISION

具有時間戳列的示例

下列範例判斷特價時,售價是 10,000 USD 或更多的週次。

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

以下範例會傳回從常值時間戳記值中的最小值。

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

帶有時間列的示例

下面的示例表時間測試包含一列 TIME_VAL(類型時間),其中插入了三個值。

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

具有時間 TEMZ 列的示例

下面的示例表具有一列時間 Z_VAL(類型為時間 TIMEZ),其中插入了三個值。

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 time '18:25:33.123456 EST'); date_part ----------- 123