间隔单位的小数秒

Vertica 支持以毫秒为单位的时间间隔 (hh:mm:ss:ms),其中 01:02:03:25 表示 1 小时、2 分钟、3 秒和 025 毫秒。毫秒转换为小数秒,如下例所示,返回 1 天、2 小时、3 分钟、4 秒和 25.5 毫秒:

=> SELECT INTERVAL '1 02:03:04:25.5';
  ?column?
------------
 1 day 02:03:04.0255

Vertica 允许使用小数分钟。小数分钟四舍五入为秒:

=> SELECT INTERVAL '10.5 minutes';
  ?column?
------------
 00:10:30
=> select interval '10.659 minutes';
  ?column?
-------------
 00:10:39.54
=> select interval '10.3333333333333 minutes';
 ?column?
----------
 00:10:20

考量

  • INTERVAL 只能包含您需要的单位子集;但是,年/月间隔表示没有固定天数的日历年和月,因此年/月间隔值不能包括天、小时、分钟。当为天/时间间隔指定年/月值时,间隔扩展假定每月 30 天,每年 365 天。由于给定月份或年份的长度会有所不同,因此天/时间间隔永远不会以月或年的形式输出,而只会以天、小时、分钟等形式输出。

  • 天/时间和年/月间隔在逻辑上是相互独立的,不能相互组合或相互比较。在以下示例中,包含 DAYS 的字面量类时间间隔不能与 YEAR TO MONTH 类型组合:

    => SELECT INTERVAL '1 2 3' YEAR TO MONTH;
    ERROR 3679:  Invalid input syntax for interval year to month: "1 2 3"
    
  • Vertica 接受最多 2^63 – 1 微秒或月(约 18 位)的时间间隔。

  • INTERVAL YEAR TO MONTH 可在分析 RANGE 窗口中使用,其条件是当 ORDER BY 列类型为 TIMESTAMP/TIMESTAMP WITH TIMEZONEDATE 时。不支持使用 TIME/TIME WITH TIMEZONE

  • ORDER BY 列类型为 TIMESTAMP/TIMESTAMP WITH TIMEZONEDATETIME/TIME WITH TIMEZONE 时,您可以使用 INTERVAL DAY TO SECOND

示例

此部分中的示例假设 INTERVALSTYLE 设置为 PLAIN,因此结果省略了子类型单位。省略间隔限定符的间隔值使用默认值 DAY TO SECOND(6)