指定时间间隔精度

通常,时间间隔精度仅适用于秒。如果未明确指定精度,则 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 会在保存表定义时将其丢弃。