Vertica 转换日期格式

Vertica convert date format

MSSQL中我们可以将日期格式转换成我们想要的格式。

例如:

convert(char(10),column_name , 120)

在 vertica 数据库中我们可以做同样的事情吗?

SELECT CONVERT(CHAR(10),CURRENT_TIMESTAMP,120)

也许是这样的?

select current_timestamp::varchar ;

还是这个?

select left(current_timestamp::varchar, 10) ;

查看标准文档中的 Data Type Coercion section and the Data Type Coercion Chart 可能会有所帮助...

你也可以这样得到:

select getdate()::date;

转换日期类型的方法有很多种,详情请看下面的文档 Vertica Date Transformation

与 MS SQL 不同,Vertica 使用三种经典的 ANSI 数据类型来存储时间元素:

  1. DATE,精确到天;默认格式通常为 YYYY-MM-DD.
  2. TIME,通常格式为 HH24:MI:SS,加上可选的最多 6 位的小数秒
  3. TIMESTAMPTIMESTAMPZ 用于整个时间戳; TIMESTAMPZ包括时区,其他不包括。而TIMESTAMP的默认格式是YYYY-MM-DDHH24:MI:SS.US,例如:2017-01-2907: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 编码人员将很容易理解这段代码中发生的事情。

玩的开心

理智的马可