TIMESTAMP 类型

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

表示由字段 year、month、day、hour、minute 和 second 的值构成的值,使用会话本地时区。 时间戳值表示绝对时间点。

语法

TIMESTAMP [ (p) ] | TIMESTAMP_LTZ [ (p) ]
  • p:从 6 中选拔的 9精度,表示分秒数字的数量。 默认值为 6。 指定 9 纳秒精度。

Important

TIMESTAMP(p) 精确 7地——9 处于 Beta阶段。

限制

受支持的时间戳范围是 -290308-12-21 BCE 19:59:06 GMT 至 +294247-01-10 CE 04:00:54 GMT。

Note

写入Delta或Parquet时, TIMESTAMP(p) 精确度大于 6 1677年至2262年的数值限制在1677年至2262年之间。

文本

TIMESTAMP timestampString

TIMESTAMP_LTZ timestampString

timestampString
{ '[+|-]yyyy[...]' |
  '[+|-]yyyy[...]-[m]m' |
  '[+|-]yyyy[...]-[m]m-[d]d' |
  '[+|-]yyyy[...]-[m]m-[d]d ' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h[:]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m[:]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s[.]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s.[ms][ms][ms][us][us][us][ns][ns][ns][zoneId]' }
  • + 或 -:可选的符号。 - 指示 BCE,+ 指示 CE(默认)。
  • yyyy:一个至少包含四位数字的年份。
  • [m]m:介于 01 和 12 之间的一位数或两位数的月份。
  • [d]d:介于 01 和 31 之间的一位数或两位数的日期。
  • h[h]:介于 00 和 23 之间的一位数或两位数的小时。
  • m[m]:介于 00 和 59 之间的一位数或两位数的分钟。
  • s[s]:介于 00 和 59 之间的一位数或两位数的秒。
  • [ms][ms][ms][us][us][us][ns][ns][ns]:最多可达9位的分数秒。 指定恰好九个小数位来构造 TIMESTAMP(9) 文字。

zoneId?

  • Z - 祖鲁时区 UTC+0
  • +|-[h]h:[m]m
  • 具有 UTC+、UTC-、GMT+、GMT-、UT+ 或 UT- 前缀的 ID,和具有以下格式的后缀:
    • +|-h[h]
    • +|-hh[:]mm
    • +|-hh:mm:ss
    • +|-hhmmss
  • 基于区域的区域 ID,格式为 <area>/<city>,例如 Europe/Paris。

如果未指定月份或日期部分,则默认为 1。 如果未指定小时、分钟或秒部分,则默认为 0。 如果未指定 zoneId,则它默认为会话时区,

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

说明

使用本地时区的时间戳将会在内部规范化并以 UTC 形式保存。 只要提取值或其中的一部分,就会应用本地会话时区。

要在Delta Lake表中使用 TIMESTAMP(9) 列,请启用时间戳精确功能:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timestampPrecision' = 'supported')

启用该功能会升级桌面协议。 不支持该功能的客户端无法读取或写入该表。 请参阅 Delta Lake 功能兼容性和协议。

示例

> SELECT TIMESTAMP'0000';
  0000-01-01 00:00:00

> SELECT TIMESTAMP'2020-12-31';
  2020-12-31 00:00:00

> SELECT TIMESTAMP'2021-7-1T8:43:28.123456';
  2021-07-01 08:43:28.123456

> SELECT current_timezone(), TIMESTAMP'2021-7-1T8:43:28UTC+3';
  America/Los_Angeles 2021-06-30 22:43:28

> SELECT CAST('1908-03-15 10:1:17' AS TIMESTAMP)
  1908-03-15 10:01:17

> SELECT TIMESTAMP'+10000';
  +10000-01-01 00:00:00

> SELECT typeof(TIMESTAMP'2026-08-18 14:30:45.123456789');
  TIMESTAMP(9)

> SELECT CAST('2026-08-18 14:30:45.123456789' AS TIMESTAMP(9));
  2026-08-18 14:30:45.123456789

TIMESTAMP(9) 表格限制

  • 冰山表不支持。
  • 不支持在三角洲湖表中生成的列。
  • 不支持三角洲湖表中的液体聚类列。