Impala 日期格式

问题描述 投票:0回答:1

我有一个 impala 表,其中 report_date 列值以 yyyyMMdd 和 yyyy-MM-dd 字符串格式存储,例如

20210923 2021-09-23

我想将它们转换为日期格式

我尝试了下面两个命令将列的数据类型从字符串更改为日期

CAST(report_date  AS DATE FORMAT 'yyyy-MM-dd')

CAST((CAST(CONCAT_WS('-',substr(repport_date,1,4),substr(repport_date,5,2),substr(repport_date,7)) AS STRING)) AS DATE FORMAT 'yyyy-MM-dd')

这在一种环境中工作正常,但在其他环境中会抛出错误。

是否有其他方法可以将字符串列更改为日期。

如果有人可以建议一种方法来实现这一目标!!

impala
1个回答
0
投票

您可以尝试以下代码

select trunc(to_timestamp( replace(your_col,'-',''),'yyyyMMdd'),'DD') date

这将首先将 - 替换为空白,以便 yyyy-MM-dd 转换为 yyyyMMdd。然后使用 to_timestamp 使其成为时间戳。最后使用 trunc 删除时间部分并使其成为日期。

© www.soinside.com 2019 - 2024. All rights reserved.