2016-09-22 17 views
3

このサンプルを見ました。これをどのように解決できますか?"MM/DD/YY"形式の日付文字列を変換する

Hiveメタストアには、customerという名前のテーブルが含まれているproblem1という名前のデータベースが含まれています。 customertableには、それぞれが誕生日フィールドを持つ90,000,000件の顧客レコード(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がゼロパディング日(1月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レコードのalistを持っています。何個のフォーマットがあるのか​​はっきりしていません。一般的な方法はありません – 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") 
) 
関連する問題