2017-05-24 24 views
0

PIGを使用して日付と時刻を変換するには?私は、24時間形式の入力がToDate($0,'dd/MM/yyyy hh:mm:ss aa') 結果は豚スクリプトtoDate変換結果の異なる出力結果

30/06/2016 02:43:23.324+05:30 01/12/2016 12:43:23+05:30

しかし

30/06/2016 14:43:23 01/12/2016 12:43:23

として結果を期待して通過した後

30/06/2016 02:43:23 PM 01/12/2016 12:43:23 AM

値に変換しないで変換しようとしています

誰でもこのことを助けることができます

答えて

1

Ref:http://pig.apache.org/docs/r0.12.0/func.html#to-date ToDateの戻り値の型はDateTimeオブジェクトです。

chararrayの日付を他の形式に変換するには、DateTimeオブジェクトを取得した後でToString()関数を使用する必要があります。

入力:a.csv

30/06/2016 02:43:23 PM 
01/12/2016 12:43:23 AM 

豚スクリプト:

adataset = LOAD 'a.csv' USING PigStorage(',') AS (display_date:chararray); 
req = FOREACH adataset GENERATE ToString(ToDate(display_date,'dd/MM/yyyy hh:mm:ss a'),'yyyy/MM/dd HH:mm:ss'); 
DUMP req; 
+0

ムラリあなたの助けに感謝たくさん....その作業素晴らしい!!!!! 30/06/16 02:43:23 PM 01/12/17 12:43:23 AMのような日付時刻を(30/06/2016 14:43:23)に変換することは可能ですか(01/12/2016 00: 43:23) – dass

+0

@dass:フォーマットを指定する必要があります。フォーマットの指定方法については、http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.htmlを参照してください。 。あなたの例では、dd/MM/yyは動作するはずです。 –

+0

日時の形式を変更する必要があるため、日付、年、月、分、hhを個別に取得する必要があります。yh:mm:ds hh:mm:ss、 ?同じgenerateステートメントを実行することは可能ですか?私は以下のコメントで何をしようとしているのと同じコードを見つけてください。 – dass