【问题标题】:Vertica convert date formatVertica 转换日期格式
【发布时间】:2017-01-20 05:53:53
【问题描述】:

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

例如:

convert(char(10),column_name , 120)

在 vertica 数据库中我们可以这样做吗?

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

【问题讨论】:

标签: sql vertica


【解决方案1】:

也许是这样的?

select current_timestamp::varchar ;

还是这个?

select left(current_timestamp::varchar, 10) ;

查看标准文档中的Data Type Coercion 部分和Data Type Coercion Chart 可能会有所帮助...

【讨论】:

    【解决方案2】:

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

    1. DATE,精确到天;默认格式通常为 YYYY-MM-DD。
    2. TIME,通常格式为 HH24:MI:SS,加上可选的最多 6 位数字作为秒的小数
    3. TIMESTAMPTIMESTAMPZ 表示整个时间戳; 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 编码人员很容易理解这段代码中发生的事情。

    玩得开心

    理智的马可

    【讨论】:

      【解决方案3】:

      你也可以这样得到:

      select getdate()::date;
      

      转换日期类型的方法有很多种,请参阅下面的文档了解更多详细信息 Vertica Date Transformation

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 2017-12-23
        • 2018-02-12
        • 1970-01-01
        相关资源
        最近更新 更多