控制间隔格式
间隔限定符指定 Vertica 用来解释和格式化字面量类时间间隔的一系列选项。间隔限定符也可以指定精度。每个间隔限定符由一个或两个单位组成:
unit[p] [ TO unit[p] ]
其中:
如果间隔省略了间隔限定符,Vertica 将使用默认值 DAY TO SECOND(6)
。
间隔限定符类别
间隔限定符属于以下类别之一:
注意
以下所有示例均假定 INTERVALSTYLE 设置为纯文本。年-月
Vertica 支持两种年-月子类型: YEAR
和 MONTH
。
在以下示例中,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 支持四种天-时间子类型:DAY
、HOUR
、MINUTE
和 SECOND
。
在以下示例中,间隔限定符 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:ss
和 hh: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