【问题标题】:Impala Date to String ConversionImpala 日期到字符串的转换
【发布时间】:2018-03-16 15:42:55
【问题描述】:

如何在 impala 中检查列的类型?查询是

select TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'))

我还想将查询结果格式化为字符串yyyyMMddCAST 返回null。有什么建议吗?

【问题讨论】:

    标签: date hive type-conversion impala


    【解决方案1】:

    您可以在 impala 中尝试以下查询吗?

    Case1:-
        select cast(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')) as string);
        Result
        2018-03-16
    
    Case2:-
        select cast((FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyyMMdd')) as string);
        Result
        20180316
    
    Case3:-
        select cast(regexp_replace(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd HH:mm:ss')),'-','')as string);
        Result
        20180316
    

    您可以使用 regexp_replace 将所有 - 替换为 空字符串,这样我们就可以有 yyyyMMdd 格式。

    【讨论】:

      【解决方案2】:

      我没有完全理解您关于“检查列的类型”的问题。 TO_DATE 函数将结果作为字符串返回。

      对于第二个问题,您可以使用 current_date 获取服务器日期,然后使用名为“DATE_FORMAT”的函数。顺便说一句,如果你想要小时、分钟、秒和微秒,Unix 时间戳很有用,如果不需要时间,current_date 函数就足够了。

      SELECT DATE_FORMAT(CURRENT_DATE, 'yyyyMMdd');
      Result: 20180316
      

      【讨论】:

      【解决方案3】:

      您好,请使用以下脚本

      select from_timestamp('2020-01-01','yyyy-MM-dd')
      

      【讨论】:

        猜你喜欢
        • 2018-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多