Specifying interval precision
In general, interval precision only applies to seconds. If no precision is explicitly specified, Vertica rounds precision to a maximum of six decimal places. For example:
=> SELECT INTERVAL '2 hours 4 minutes 3.709384766 seconds' DAY TO SECOND;
?column?
-----------------
02:04:03.709385
(1 row)
Vertica lets you specify interval precision in two ways:
-
After the
INTERVAL
keyword -
After the
SECOND
unit of an interval qualifier, one of the following:-
DAY TO SECOND
-
HOUR TO SECOND
-
MINUTE TO SECOND
-
SECOND
-
For example, the following statements use both methods to set precision, and return identical results:
=> 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)
If the same statement specifies precision more than once, Vertica uses the lesser precision. For example, the following statement specifies precision twice: the INTERVAL
keyword specifies precision of 1, while the interval qualifier SECOND
specifies precision of 2. Vertica uses the lesser precision of 1:
=> SELECT INTERVAL(1) '1.2467' SECOND(2);
?column?
----------
1.2 secs
Setting precision on interval table columns
If you create a table with an interval column, the following restrictions apply to the column definition:
-
You can set precision on the
INTERVAL
keyword only if you omit specifying an interval qualifier. If you try to set precision on theINTERVAL
keyword and include an interval qualifier, Vertica returns an error. -
You can set precision only on the last unit of an interval qualifier. For example:
CREATE TABLE public.testint2 ( i INTERVAL HOUR TO SECOND(3) );
If you specify precision on another unit, Vertica discards it when it saves the table definition.