控制间隔格式

间隔限定符指定 Vertica 用来解释和格式化字面量类时间间隔的一系列选项。间隔限定符也可以指定精度。每个间隔限定符由一个或两个单位组成:

unit[p] [ TO unit[p] ]

其中:

  • 单位指定天-时间或年-月子类型

  • p 指定精度,0 到 6 之间的整数。通常,精度仅适用于 SECOND 单位。SECOND 的默认精度为 6。有关详细信息,请参阅指定时间间隔精度

如果间隔省略了间隔限定符,Vertica 将使用默认值 DAY TO SECOND(6)

间隔限定符类别

间隔限定符属于以下类别之一:

  • 年-月:年和月的时间范围

  • 天-时间:以天、小时、分钟、秒以及毫秒为单位的时间跨度

年-月

Vertica 支持两种年-月子类型: YEARMONTH

在以下示例中,YEAR TO MONTH 限定字面量类时间间隔 1 2 以指示时间范围为 1 年零两个月:

=> SELECT interval '1 2' YEAR TO MONTH;
 ?column?
----------
 1-2
(1 row)

如果省略限定符,Vertica 将使用默认间隔限定符 DAY TO SECOND 并返回不同的结果:

=> SELECT interval '1 2';
 ?column?
----------
 1 02:00
(1 row)

以下示例使用间隔限定符 YEAR。在这种情况下,Vertica 仅从字面量类时间间隔 1y 10m 中提取年份:

=> SELECT INTERVAL '1y 10m' YEAR;
 ?column?
----------
 1
(1 row)

在下一个示例中,间隔限定符 MONTH 将相同的字面量类时间间隔转换为月份:

=> SELECT INTERVAL '1y 10m' MONTH;
 ?column?
----------
 22
(1 row)

天-时间

Vertica 支持四种天-时间子类型:DAYHOURMINUTESECOND

在以下示例中,间隔限定符 DAY TO SECOND(4) 限定字面量类时间间隔 1h 3m 6s 5msecs 57us。限定符还将秒的精度设置为 4:

=> SELECT INTERVAL '1h 3m 6s 5msecs 57us' DAY TO SECOND(4);
   ?column?
---------------
 01:03:06.0051
(1 row)

如果未指定间隔限定符,则 Vertica 将使用默认子类型 DAY TO SECOND(6),无论您如何指定字面量类时间间隔。例如,作为 SQL:2008 的扩展,以下两个命令都将返回 91days

=> SELECT INTERVAL '2-6';
    ?column?
-----------------
 910
=> SELECT INTERVAL '2 years 6 months';
 ?column?
-----------------
 910

间隔限定符可以从输入参数中提取其他值。例如,以下命令从字面量类时间间隔 3 days 2 hours 中提取 HOUR 值:

=> SELECT INTERVAL '3 days 2 hours' HOUR;
 ?column?
----------
 74

主要的天/时间 (DAY TO SECOND) 和年/月 (YEAR TO MONTH) 子类型范围可以通过间隔限定符限制为更具体的类型范围。例如,HOUR TO MINUTE 是天/时间间隔的有限形式,可用于表示时区偏移量。

=> SELECT INTERVAL '1 3' HOUR to MINUTE;
 ?column?
---------------
 01:03

hh:mm:sshh:mm 格式仅在间隔限定符中指定的至少两个字段非零且不超过 23 小时或 59 分钟时使用:

=> SELECT INTERVAL '2 days 12 hours 15 mins' DAY TO MINUTE;
  ?column?
--------------
 2 12:15
=> SELECT INTERVAL '15 mins 20 sec' MINUTE TO SECOND;
 ?column?
----------
 15:20
=> SELECT INTERVAL '1 hour 15 mins 20 sec' MINUTE TO SECOND;
 ?column?
-----------------
 75:20