跳到主要内容
版本:2.15.0

时间间隔

综述

时间间隔是一种字面量类型,通常用来和时间戳类型计算以生成新的时间戳,或者和另一个时间间隔进行加减法运算得到新的时间间隔。

时间间隔的语法

INTERVAL 为前缀以标记后续字符串变量作为时间间隔处理,字符串需符合以下语法

quantity unit [quantity unit ...] (ago)
  • quantity:对应时间单位的数量

  • unit:时间单位,支持范围如下

    时间单位缩写全称
    yyear
    季度qquarter
    Mmonth
    wweek
    dday
    hhour
    mminute
    ssecond
    毫秒msmillisecond
    微秒mcsmicrosecond
  • 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
  • 时间间隔之间不支持比较运算
  • 时间间隔之间不支持加减之外的数学运算
  • 时间间隔不支持和其他数据类型之间的数学运算
  • 时间间隔不支持和其他数据类型显式的相互转换