如何在hive中验证和匹配不同的日期格式

pbgvytdp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(685)

我的Hive表中有以下日期:

Jan 2014
Oct-13
8-Nov
8-Oct
30-Nov-11

我需要将它们转换为'yyyy-mm-dd'格式。我用过 from_unixtime(unix_timestamp(change_log_date ,'yyyyMMdd'), 'yyyy-MM-dd') 转换日期格式,这是工作良好的11月30日,但由于我有不同的日期格式的数据,所以如何编写通用代码,将检查日期格式和转换成'yyy-mm-dd'。如果不存在,我需要为日/月/年输入0。

for eg. I need to convert 8-Oct into '0000-10-08'

需要帮助吗

jogvjijk

jogvjijk1#

如果您知道所有可能的日期格式,可以使用case语句为每行应用正确的格式:

CASE WHEN change_log_date rlike '[0-9]{2}-[a-zA-Z]{3}-[0-9]{2}' 
     THEN from_unixtime(unix_timestamp(change_log_date ,'yyyyMMdd'), 'yyyy-MM-dd')
     WHEN change_log_date rlike --other regex 
     THEN -- and so on

如果您更熟悉java或python,那么可以轻松地编写代码并将其用作配置单元函数。

相关问题