INTERVAL
类型
适用于: Databricks SQL 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.3
> 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