本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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