以“MM/DD/YY”格式转换日期字符串

问题描述:

我刚看到这个例子,我怎样才能解决这个问题。以“MM/DD/YY”格式转换日期字符串

Hive Metastore包含一个名为problem1的数据库,其中包含一个名为customer的表。客户包含9000万个客户记录(90,000,000),每个记录都有一个生日场。

示例数据(生日是粗体)

1904287 Christopher Rodriguez Jan 11, 2003 
96391595 Thomas Stewart  6/17/1969 
2236067 John Nelson    08/22/54 

对于在溶液表的每一行,在“MM/DD/YY”格式的日期字符串替换生日字段的内容。

MM是填零月(01-12),
DD是填零天(01-31),
YY是填零2位数的年份(00-99)

select from_unixtime(unix_timestamp(doj,'MM/dd/yyyy')) from temp1; 
+1

2位数字的年份是不足以存储19xx年和20xx年。在你的例子中,你有两个2003年和1969年 – leftjoin

+0

我可以看到源表中日期字段的许多组合。你能提供可能的清单吗? – Ambrish

+1

@ Ambrish ..有我们一共10000记录..不知道有多少格式将是那里..其他任何通用的方式 – Alka

你不能用通用的方法来做,你必须测试每种可能的情况。 你可以这样做

select coalesce(
    from_unixtime(unix_timestamp(doj ,"MMM dd, yyyy"), "MM/dd/yy"), 
    from_unixtime(unix_timestamp(doj ,"MM/dd/yyyy"), "MM/dd/yy"), 
    from_unixtime(unix_timestamp(doj ,"MM/dd/yy"), "MM/dd/yy") 
)