适用于:
Databricks SQL
Databricks Runtime
返回 source 的 field。
语法
extract(field FROM source)
参数
field:一个关键字,用于选择应提取source的哪一部分。source:DATE、TIMESTAMP或INTERVAL表达式。
返回
如果 field 为 SECOND,则为 DECIMAL(8, 6)。
在所有其他情况下为 INTEGER。
当 source 为 DATE 或 TIMESTAMP 时 field 的受支持的值:
YEAR、Y、YEARS、YR、YRS:年份字段YEAROFWEEK:日期/时间所属的 ISO 8601 周编号年份。 例如,2005-01-02 是 2004 年第 53 周的一部分,因此结果为 2004QUARTER、QTR:日期/时间所属年份的季度 (1 - 4)MONTH、MON、MONS、MONTHS:月份字段 (1 - 12)WEEK、W、WEEKS:ISO 8601 以周为单位的年份的周编号。 一周被视为从星期一开始,第 1 周的持续时间 > 3 天。 在 ISO 周编号系统中,1 月初的日期可能是上一年第 52 或 53 周的一部分,而 12 月下旬的日期可能是下一年第一周的一部分。 例如,2005-01-02 是 2004 年第 53 周的一部分,而 2012-12-31 是 2013 年第一周的一部分DAY、D、DAYS:月份日期字段 (1 - 31)DAYOFWEEK、DOW:日期/时间为星期日 (1) 到星期六 (7) 时对应的星期几DAYOFWEEK_ISO、DOW_ISO:日期/时间为星期一 (1) 到星期日 (7) 时对应的星期几(基于 ISO 8601)DOY:一年中的第几天 (1 - 365/366)HOUR、H、HOURS、HR、HRS:小时字段 (0 - 23)MINUTE、M、MIN、MINS、MINUTES:分钟字段 (0 - 59)SECOND、S、SEC、SECONDS、SECS:秒字段,包括小数部分
当 source 为 INTERVAL 时 field 的受支持的值为(不区分大小写):
YEAR、Y、YEARS、YR、YRS:总月数/12MONTH、MON、MONS、MONTHS:总月数 % 12DAY、D、DAYS:间隔的天数部分HOUR、H、HOURS、HR、HRS:微秒包含的小时数MINUTE、M、MIN、MINS、MINUTES:从微秒开始经过数小时后所剩分钟数SECOND、S、SEC、SECONDS、SECS:从微秒开始经过数小时和数分钟后所剩秒数(包括小数部分)
示例
> 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