我有一个 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')
这在一种环境中工作正常,但在其他环境中会抛出错误。
是否有其他方法可以将字符串列更改为日期。
如果有人可以建议一种方法来实现这一目标!!
您可以尝试以下代码
select trunc(to_timestamp( replace(your_col,'-',''),'yyyyMMdd'),'DD') date
这将首先将 - 替换为空白,以便 yyyy-MM-dd 转换为 yyyyMMdd。然后使用 to_timestamp 使其成为时间戳。最后使用 trunc 删除时间部分并使其成为日期。