与 MS SQL 不同,Vertica 具有三种经典的 ANSI 数据类型来存储时间元素:
-
DATE,精确到天;默认格式通常为 YYYY-MM-DD。
-
TIME,通常格式为 HH24:MI:SS,加上可选的最多 6 位数字作为秒的小数
-
TIMESTAMP 和 TIMESTAMPZ 表示整个时间戳; TIMESTAMPZ 包含时区,其他不包含。 TIMESTAMP 的默认格式为 YYYY-MM-DD HH24:MI:SS.US,例如:2017-01-29 07:45:44.896498。
这些输入类型中的任何一种都可以使用来自 Oracle 的相同函数:TO_CHAR 随意格式化。
MSSQL 的不那么自解释的格式代码 120,对应这个格式字符串:YYYY-MM-DD HH24:MI:SS。
这就是你使用它的方式;我使用 CURRENT_TIME、CURRENT_DATE 和 CURRENT_TIMESTAMP 作为输入,来展示它的作用:
SELECT
TO_CHAR(CURRENT_TIME ,'YYYY-MM-DD HH24:MI:SS') AS from_tm
, TO_CHAR(CURRENT_DATE ,'YYYY-MM-DD HH24:MI:SS') AS from_dt
, TO_CHAR(CURRENT_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS') AS from_ts
;
from_tm | from_dt | from_ts
---------------------+---------------------+---------------------
2017-01-29 07:54:05 | 2017-01-29 00:00:00 | 2017-01-29 07:54:05
这里的好处是这个 TO_CHAR() 函数在许多数据库中很常见,其他 SQL 编码人员很容易理解这段代码中发生的事情。
玩得开心
理智的马可