如何在配置单元中验证和匹配不同的日期格式
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。
我的蜂巢中有以下日期 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。