2016-09-22 53 views
3

我剛看到這個例子,我怎樣才能解決這個問題。以「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

回答

1

你不能用通用的方法來做,你必須測試每種可能的情況。 你可以這樣做

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") 
) 
相關問題