適用於:
Databricks SQL
Databricks Runtime
傳回 field 的 source。
備註
從TIMESTAMP(TIMESTAMP_LTZ)中擷取欄位時,結果是基於會話時區。
語法
extract(field FROM source)
引數
-
field:一個關鍵詞,用於選擇從source中應擷取的部分。 -
source:DATE、TIMESTAMP、TIMESTAMP_NTZ或INTERVAL表達式。
退貨
如果 field 為 SECOND,則為 DECIMAL(8, 6)。
在其他所有情況下,為 INTEGER。
當 field 為 source 或 DATE時,支援的 TIMESTAMP 值:
-
YEAR、Y、YEARS、YR、YRS:年份欄位 -
YEAROFWEEK:日期時間所屬的 ISO 8601 週計數系統的年份。 例如,2005-01-02 是 2004 年第 53 周的一部分,因此結果是 2004 年 -
QUARTER,QTR:日期時間所屬的年度季度(1 - 4) -
MONTH、 、MONMONS、MONTHS: 月份欄位 (1 - 12) -
WEEKWWEEKS:ISO 8601 以周為基礎的年份的周數。 一周會被視為從星期一開始,第 1 周是第一周,有 >3 天。 在 ISO 周編號系統中,1 月初的日期有可能是上一年第 52 或第 53 周的一部分,而 12 月底的日期可能是明年第一周的一部分。 例如,2005-01-02 是 2004 年第 53 周的一部分,而 2012-12-31 是 2013 年第一周的一部分 -
DAY、 、DDAYS: 月份日期欄位 (1 - 31) -
DAYOFWEEK,DOW日期時間的星期天(1) 到星期六(7) -
DAYOFWEEK_ISO,DOW_ISO:根據 ISO 8601 的日期時間中一週的天數,從星期一(1)至星期日(7) -
DOY:一年中的日期 (1 - 365/366) -
HOUR、H、HOURS、HR、HRS:小時欄位(0~23) -
MINUTE、M、MIN、MINS、MINUTES:分鐘欄位(0 - 59) -
SECOND、S、SEC、SECONDS、SECS秒欄位,包括小數部分
在 field 是 source 的情況下,支援的 INTERVAL 值(不區分大小寫)為:
-
YEAR、 、YYEARS、 、YRYRS總月數 / 12 -
MONTH、MON、MONS、MONTHS:總月數 % 12 -
DAY、D、DAYS:間隔的天數 - 微秒
HOUR、H、HOURS、HR:包含多少時數? -
MINUTE、M、MIN、MINS、MINUTES:從微秒中扣除數小時後剩餘多少分鐘 -
SECOND、S、SEC、SECONDS、SECS:從微秒減去小時和分鐘後剩餘的帶有小數的秒數是多少
若要傳回一周當天的三個字母縮略字,請使用 dayname 函式。
範例
> SELECT extract(YEAR FROM TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT extract(week FROM TIMESTAMP'2019-08-12 01:00:00.123456');
33
> SELECT extract(DAY FROM DATE'2019-08-12');
12
> SELECT extract(SECONDS FROM TIMESTAMP'2019-10-01 00:00:01.000001');
1.000001
> SELECT extract(MONTHS FROM INTERVAL '2-11' YEAR TO MONTH);
11
> SELECT extract(SECONDS FROM INTERVAL '5:00:30.001' HOUR TO SECOND);
30.001000