指定时间间隔精度
通常,时间间隔精度仅适用于秒。如果未明确指定精度,则 Vertica 将精度四舍五入到最多六位小数。例如:
=> SELECT INTERVAL '2 hours 4 minutes 3.709384766 seconds' DAY TO SECOND;
?column?
-----------------
02:04:03.709385
(1 row)
Vertica 允许您通过两种方式指定时间间隔精度:
-
在
INTERVAL
关键字之后 -
在时间间隔限定符的
SECOND
单元之后,指定以下之一:-
DAY TO SECOND
-
HOUR TO SECOND
-
MINUTE TO SECOND
-
SECOND
-
例如,以下语句使用全部两种方法来设置精度,并返回相同的结果:
=> SELECT INTERVAL(4) '2 hours 4 minutes 3.709384766 seconds' DAY TO SECOND;
?column?
---------------
02:04:03.7094
(1 row)
=> SELECT INTERVAL '2 hours 4 minutes 3.709384766 seconds' DAY TO SECOND(4);
?column?
---------------
02:04:03.7094
(1 row)
如果同一语句多次指定精度,则 Vertica 使用较低的精度。例如,以下语句指定两次精度:INTERVAL
关键字指定精度 1,时间间隔限定符 SECOND
指定精度 2。Vertica 使用较低的精度 1:
=> SELECT INTERVAL(1) '1.2467' SECOND(2);
?column?
----------
1.2 secs
设置时间间隔表列的精度
如果创建具有时间间隔列的表,则以下限制适用于列定义:
-
仅当您不指定时间间隔限定符时,才能在
INTERVAL
关键字上设置精度。如果您尝试在INTERVAL
关键字上设置精度并包含时间间隔限定符,则 Vertica 返回错误。 -
您只能在时间间隔限定符的最后一个单元上设置精度。例如:
CREATE TABLE public.testint2 ( i INTERVAL HOUR TO SECOND(3) );
如果您在另一个单元上指定精度,Vertica 会在保存表定义时将其丢弃。