适用于:
Databricks SQL
Databricks Runtime 18.3 及更高版本
Important
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
表示一天中的一个时间,该值包含字段小时、分钟和秒的值,没有时区。
Syntax
TIME | TIME(p)
p:指定秒字段中的小数位数的可选精度。
有效值为 0 到 6. 如果 p 省略,则默认精度为 6 (微秒)。
限额
支持的时间值的范围是 00:00:00.00000023:59:59.999999。
Literals
TIME timeString
timeString
{ '[h]h:[m]m' |
'[h]h:[m]m:[s]s' |
'[h]h:[m]m:[s]s.[f...]' |
'[h]h:[m]m AM|PM' |
'[h]h:[m]m:[s]s AM|PM' |
'[h]h:[m]m:[s]s.[f...] AM|PM' }
-
[h]h:介于和(24 小时格式)或介于和12(12 小时格式)PMAM/之间的01一到两位数小时0023。 -
[m]m:介于和59之间的00一两位数分钟。 -
[s]s:介于和59之间的00一两位数字秒。 -
[f...]:秒最多 6 位小数。 -
AM或PM:指示 12 小时时钟值的可选不区分大小写的后缀。
前缀 TIME 是不区分大小写的。
如果未指定第二个组件,则默认为 0.
如果文本不表示正确的时间,Azure Databricks将引发错误。
精度规则
如果组合了两 TIME 个精度不同的值(例如,在 COALESCE、 CASE、 UNION 或算术中),则结果使用两个精度的宽。
例如,最不常见的类型 TIME(3) 是 TIME(6)TIME(6)。
将值 TIME 强制转换为较低的精度时,小数秒将被 截断,而不是舍入:
> SELECT CAST(TIME'12:30:45.987654' AS TIME(3));
12:30:45.987
向 a TIME添加或减去一天时间间隔时,结果使用更宽的 TIME 精度和间隔的小数秒精度。 例如,TIME(0) + INTERVAL '1.123456' SECOND 返回 TIME(6)。 如果结果超出 [00:00:00, 24:00:00),Azure Databricks将引发 DATETIME_OVERFLOW。
备注
对 TIME 值执行的所有操作均不考虑任何时区。
若要使用 TIME Delta Lake 表中的列,当您创建新的包含类型列 TIME 的 Delta 表时,将自动启用支持。 若要向现有表添加 TIME 列,必须先启用该功能:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timeType' = 'supported')
该 TIME 类型具有以下限制:
- 生成的列不支持。
- 不支持 bloom 筛选器索引。
- Z 排序不支持。
示例
> SELECT TIME'10:30:00';
10:30:00
> SELECT TIME'08:15';
08:15:00
> SELECT TIME'23:59:59.123456';
23:59:59.123456
> SELECT CAST('14:30:00' AS TIME);
14:30:00
> SELECT CAST('09:15:30.5' AS TIME(3));
09:15:30.500
> SELECT current_time();
16:57:04.304361
> SELECT make_time(6, 30, 45.887);
06:30:45.887000