时间间隔
综述
时间间隔是一种字面量类型,通常用来和时间戳类型计算以生成新的时间戳,或者和另一个时间间隔进行加减法运算得到新的时间间隔。
时间间隔的语法
以 INTERVAL
为前缀以标记后续字符串变量作为时间间隔处理,字符串需符合以下语法
quantity unit [quantity unit ...] (ago)
quantity:对应时间单位的数量
unit:时间单位,支持范围如下
时间单位 缩写 全称 年 y year 季度 q quarter 月 M month 周 w week 日 d day 时 h hour 分 m minute 秒 s second 毫秒 ms millisecond 微秒 mcs microsecond ago:字符串末尾如有
ago
则返回之前时间间隔的负数例如
INTERVAL '2month 1day ago'
等价于INTERVAL '-2month -1day'
用例
-- 时间间隔之间的加减运算
INTERVAL '2month' + INTERVAL '1year'
-- 时间字面量加减时间间隔
TIMESTAMP '2020-07-27T08:22:22' + INTERVAL '2y 3month'
-- 在表函数 generate_time_buckets 中的应用
generate_time_bucket(TIMESTAMP '2020-07-27T08:22:22', TIMESTAMP '2023-09-08T08:22:22', INTERVAL '1q')
注意事项
- 时间间隔的最终返回类型是字符串,例如
SELECT INTERVAL '1day'
返回值为'1day'
类型string
- 时间间隔之间不支持比较运算
- 时间间隔之间不支持加减之外的数学运算
- 时间间隔不支持和其他数据类型之间的数学运算
- 时间间隔不支持和其他数据类型显式的相互转换