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

时间:2017-01-06 07:46:00

标签: hadoop hive unix-timestamp

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

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')来隐藏日期格式,因为我在数据中有不同的日期格式,所以如何编写通用代码来检查日期格式并将其转换为&#39 ; YYYY-MM-DD&#39 ;. 如果不存在,我需要每天/每月/每年加0。

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

需要帮助

1 个答案:

答案 0 :(得分:0)

如果您知道所有可能的日期格式,则可以使用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