date_part
函数
适用于: Databricks SQL Databricks Runtime
提取部分日期、时间戳或间隔。
语法
date_part(fieldStr, expr)
参数
fieldStr
:STRING
文本。expr
:DATE
、TIMESTAMP
或INTERVAL
表达式。
返回
如果 fieldStr
为 'SECOND'
,则为 DECIMAL(8, 6)
。
在所有其他情况下为 INTEGER
。
当 source
为 DATE
或 TIMESTAMP
时 field
的受支持的值:
'YEAR'
、'Y'
、'YEARS'
、'YR'
、'YRS'
:年份字段'YEAROFWEEK'
:日期/时间所属的 ISO 8601 周编号年份。 例如,2005-01-02 是 2004 年第 53 周的一部分,因此结果为 2004'QUARTER'
、'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'
:总月数/12'MONTH'
、'MON'
、'MONS'
、'MONTHS'
:总月数 % 12'DAY'
、'D'
、'DAYS'
:间隔的天数部分'HOUR'
、'H'
、'HOURS'
、'HR'
、'HRS'
:微秒包含的小时数'MINUTE'
、'M'
、'MIN'
、'MINS'
、'MINUTES'
:从微秒开始经过数小时后所剩分钟数'SECOND'
、'S'
、'SEC'
、'SECONDS'
、'SECS'
:从微秒开始经过数小时和数分钟后所剩秒数(包括小数部分)
date_part
函数是 SQL 标准 extract 函数的同义词。
例如,date_part('year', CURRENT_DATE)
等效于 extract(YEAR FROM CURRENT_DATE)
示例
> SELECT date_part('YEAR', TIMESTAMP'2019-08-12 01:00:00.123456');
2019
> SELECT date_part('Week', TIMESTAMP'2019-08-12 01:00:00.123456');
33
> SELECT date_part('day', DATE'2019-08-12');
224
> SELECT date_part('SECONDS', TIMESTAMP'2019-10-01 00:00:01.000001');
1.000001
> SELECT date_part('Months', INTERVAL '2-11' YEAR TO MONTH);
11
> SELECT date_part('seconds', INTERVAL '5:00:30.001' HOUR TO SECOND);
30.001000