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

how to verify and match different date formats in hive

我的蜂巢中有以下日期 table :

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') 来隐藏日期格式,该格式适用于 2011 年 11 月 30 日,但是由于我在数据中有不同的日期格式,所以如何编写通用代码来检查日期格式并将其转换为 'yyyy-MM-dd'. 如果 day/month/year 不存在,我需要为 day/month/year 输入 0。

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

需要帮助

如果您知道所有可能的日期格式,则可以使用 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,您可以轻松编写您的代码并将其用作 Hive function