Impala 日期到字符串的转换

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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

【讨论】:

根据[Impala SQL 参考]docs.cloudera.com/documentation/enterprise/6/6.3/topics/…),这个函数被命名为FROM_TIMESTAMP【参考方案3】:

您好,请使用以下脚本

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

【讨论】:

以上是关于Impala 日期到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章

在 Impala 中将连接的字符串转换为时间戳

Impala 将字符串转换为时间戳总是返回 NULL

从 Impala 中的时间戳值变量中提取日期

Impala:将 dd-MMM-yy 字符串转换为 yyyy-mm-dd

将其他类型转换为 Impala 数组

在 impala 中将儒略日期转换为公历日期