适用于: Databricks SQL
 Databricks SQL  Databricks Runtime
 Databricks Runtime
提取部分日期、时间戳或间隔。
语法
date_part(fieldStr, expr)
参数
- 
              fieldStr:STRING文本。
- 
              expr:DATE、TIMESTAMP或INTERVAL表达式。
返回
如果 fieldStr 为 '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'、'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':秒字段,包括小数部分
当 field 为 source 时 INTERVAL 的受支持的值为(不区分大小写):
- 
              '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');
 12
> 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