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'))
我还想将查询结果格式化为字符串yyyyMMdd
。 CAST
返回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 日期到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章