0

2 つの列を結合します。日時。ホットコーディングされた日付と時刻を渡すと正常に動作しますが、列を介して渡すとエラーがスローされます。

解析不能な日付: "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"); 

Talend の Java コード:

Talend の Java コード

4

1 に答える 1

1

間違ったデータ型を使用すると、日付の処理が少し難しくなる可能性があります。であるフィールドに入力したいと思います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が null でない場合は、 and を連結xdatextime、これを使用toString()して解析しようとします。繰り返しますが、これは不必要な複雑さのようです。xdatextimeがすでにフィールドであると仮定するとDate、次のように記述できますMaterialCodeCSV.xdate + MaterialCodeCSV.xtime
  • 両方がStringフィールドの場合、がフォーマットされており、 であることを確認する必要があります。次に、除外できますxdateyyyy/MM/ddxtimeHH:mm:ss.toString()
  • また、両方がStringフィールドの場合は、スペースを追加する必要があります。MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
  • さらに、最初のケースでは、で解析しyyyy-MM-dd HH:mm:ssます。2 番目のケースでは、 で解析しyyyy/mm/dd H:mm:ssます。これは「年・分・日」と読みます。また、時間の桁は 1 つしかないため、9:59:59 以降は解析できません。正しく使用する必要がありますyyyy/MM/dd HH:mm:ss

結論としては、次のようになります (私が正しく仮定し、 と に正しい形式Stringのフィールドをxdate使用している場合xtime):

MaterialCodeCSV.xdate == null ? 
TalendDate.getCurrentDate() : 
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");
于 2017-07-12T13:16:01.063 に答える