时间间隔
综述
时间间隔是一种字面量类型,通常用来和时间戳类型计算以生成新的时间戳,或者和另一个时间间隔进行加减法运算得到新的时间间隔。
时间间隔的语法
以 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
- 时间间隔之间不支持比较运算
- 时间间隔之间不支持加减之外的数学运算
- 时间间隔不支持和其他数据类型之间的数学运算
- 时间间隔不支持和其他数据类型显式的相互转换