2017-07-12 92 views
0

2つの列を結合します。日時。私はホットコード化された日付と時刻を渡すと、それが正常に動作しますが、私は、カラムを通してそれを渡すときにエラーがスローされます。Talendの日付と時刻を組み合わせる

Unparseable date: "05/05/1992"

私はすでにこの試みた:才能で

MaterialCodeCSV.xdate == null ? 
TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", TalendDate.getDate("yyyy-MM-dd HH:mm:ss")) : 
TalendDate.parseDateLocale("yyyy/mm/dd HH:mm:ss",MaterialCodeCSV.xdate.toString() + MaterialCodeCSV.xtime.toString(),"EN"); 

Javaコード:

Java code in Talend

+1

が列「MaterialCodeCSV.xtime内のすべての日付をい"同じフォーマット" 01/01/2000 "を持っていますか?カラムのタイプは何ですか? –

答えて

0

間違ったデータ型を使用すると、日付の扱いが少し複雑になることがあります。私はあなたがDateであるフィールドを埋めると仮定します。この方法にはいくつかのエラーがあります。

MaterialCodeCSV.xdate == null ? 
TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", TalendDate.getDate("yyyy-MM-dd HH:mm:ss")) : 
TalendDate.parseDateLocale("yyyy/mm/dd H:mm:ss",MaterialCodeCSV.xdate.toString()+ MaterialCodeCSV.xtime.toString(),"EN"); 
  • 日付を作成し、即座に再びそれを解析MaterialCodeCSV.xdate == null場合は?それは不必要な複雑で非効率的なようです。これをTalendDate.getCurrentDate()
  • に変更します。xdateがヌルでない場合は、xdatextimeの連結のみを使用してtoString()を使用し、これを解析してみてください。再び、これは不必要な複雑なようです。私が今仮定したところでxdatextimeがすでにDateのフィールドである場合は、MaterialCodeCSV.xdate + MaterialCodeCSV.xtimeと書くことができます。両方がStringのフィールドがある場合
  • 、あなたはxdateyyyy/MM/ddxtimeHH:mm:ssでフォーマットされていることを確認するを持っているMaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
  • また、最初のケースでは、あなたがyyyy-MM-dd HH:mm:ssと解析:その後、両方がStringフィールドがある場合、あなたは追加のスペースを追加する必要があり、また
  • .toString()を除外することができます。 2番目のケースでは、yyyy/mm/dd H:mm:ssと解析します。これは「年/分/日」と読みます。また、1時間の桁しかないため、9時59分59秒の時刻以降は何も許可されません。正しくyyyy/MM/dd HH:mm:ssを使用する必要があります。だから、(私が正しく仮定し、あなたがxdatextimeのために正しくフォーマットStringフィールドを使用している場合)、それは次のようになります締結する

MaterialCodeCSV.xdate == null ? 
TalendDate.getCurrentDate() : 
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN"); 
関連する問題