INTERVAL 类型

适用于:Databricks SQL check marked yes Databricks Runtime

表示以秒或以月为单位的时间间隔。

语法

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

dayTimeIntervalQualifier
 { DAY [TO { HOUR | MINUTE | SECOND } ] |
   HOUR [TO { MINUTE | SECOND } ] |
   MINUTE [TO SECOND] |
   SECOND }

注释

含年或月的间隔称为年-月间隔。

涉及天、小时、分钟或秒的间隔被称为“天时间”间隔。

年月间隔和天时间间隔不能进行合并或比较。

天时间间隔严格基于 86400 秒/天和 60 秒/分钟。

秒始终被视为包含微秒。

限制

年-月间隔的最大范围为 +/- 178,956,970 年和 11 月。

天时间间隔的最大范围为 +/- 106,751,991 天、23 小时、59 分钟和 59.999999 秒。

文本

year-month interval
  INTERVAL [+|-] yearMonthIntervalString yearMonthIntervalQualifier

day-time interval
  INTERVAL [+|-] dayTimeIntervalString dayTimeIntervalQualifier

yearMonthIntervalString
  { '[+|-] y[...]' |
    '[+|-] y[...]-[m]m' }

dayTimeIntervalString
  { '[+|-] d[...]' |
    '[+|-] d[...] [h]h' |
    '[+|-] d[...] [h]h:[m]m' |
    '[+|-] d[...] [h]h:[m]m:[s]s' |
    '[+|-] d[...] [h]h:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] h[...]' |
    '[+|-] h[...]:[m]m' |
    '[+|-] h[...]:[m]m:[s]s' |
    '[+|-] h[...]:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] m[...]' |
    '[+|-] m[...]:[s]s' |
    '[+|-] m[...]:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] s[...]' |
    '[+|-] s[...].ms[ms][ms][us][us][us]' }
  • y:已用年数。
  • m:已用月数。
  • d:已用天数。
  • h:已用小时数。
  • m:已用分钟数。
  • s:已用秒数。
  • ms:已用毫秒数。
  • us:已用微秒数。

除非单位是 intervalQualifier 的前导单位,否则该单位必须在定义的范围内:

  • 月:0 到 11 之间
  • 小时:0 到 23 之间
  • 分钟:0 到 59 之间
  • 秒:0.000000 到 59.999999 之间

可在 intervalString 的内部或外部为符号添加前缀。 如果有一个 - 符号,则间隔为负。 如果有两个或没有 - 符号,则间隔为正。 如果 intervalString 中的组件与 intervalQualifier 中的组件不匹配,则会引发错误。 如果 intervalString 值不在 intervalQualifier 指定的范围内,则会引发错误。

示例

> SELECT INTERVAL '100-00' YEAR TO MONTH;
  100-0

> SELECT INTERVAL '-3600' MONTH;
  -300-0

> SELECT INTERVAL -'200:13:50.3' HOUR TO SECOND;
  -200:13:50.300000000

> SELECT typeof(INTERVAL -'200:13:50.3' HOUR TO SECOND);
  interval hour to second

> SELECT CAST('11 23:4:0' AS INTERVAL DAY TO SECOND);
  11 23:04:00.000000000