间隔单位的小数秒
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 TIMEZONE
或DATE
时。不支持使用TIME/TIME WITH TIMEZONE
。 -
当
ORDER BY
列类型为TIMESTAMP/TIMESTAMP WITH TIMEZONE
、DATE
和TIME/TIME WITH TIMEZONE
时,您可以使用INTERVAL DAY TO SECOND
。
示例
此部分中的示例假设 INTERVALSTYLE
设置为 PLAIN
,因此结果省略了子类型单位。省略间隔限定符的间隔值使用默认值 DAY TO SECOND(6)
。