TIME 类型

适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 18.3 及更高版本

Important

此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版

表示一天中的一个时间,该值包含字段小时、分钟和秒的值,没有时区。

Syntax

TIME | TIME(p)

p:指定秒字段中的小数位数的可选精度。 有效值为 06. 如果 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 位小数。
  • AMPM:指示 12 小时时钟值的可选不区分大小写的后缀。

前缀 TIME 是不区分大小写的。

如果未指定第二个组件,则默认为 0.

如果文本不表示正确的时间,Azure Databricks将引发错误。

精度规则

如果组合了两 TIME 个精度不同的值(例如,在 COALESCECASEUNION 或算术中),则结果使用两个精度的宽。

例如,最不常见的类型 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