2017-07-12 2 views
0

Ich kombiniere zwei Spalten; Datum und Uhrzeit. Als ich das Datum und die Zeit heiß codiert passieren es funktioniert gut, aber wenn ich es durch eine Säule passieren wirft sie den Fehler:Talend Datum und Uhrzeit kombinieren

Unparseable date: "05/05/1992"

ich dies bereits versucht:

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-Code in Talend:

Java code in Talend

+1

macht die ganze Datum in der Spalte „MaterialCodeCSV.xtime "haben das gleiche Format" 01/01/2000 "? Und was ist der Typ der Spalte? –

Antwort

0

Datum Handhabung kann ein bisschen schwierig sein, wenn falsche Datentypen verwenden. Ich nehme an, dass Sie ein Feld füllen möchten, das eine Date ist. Es gibt mehrere Fehler mit dieser Art und Weise:

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"); 
  • Wenn MaterialCodeCSV.xdate == null Sie ein Datum erstellen und analysieren sofort wieder? Das erscheint unnötig komplex und ineffizient. Ändern Sie dies in TalendDate.getCurrentDate()
  • Dann, wenn xdate nicht null ist, Sie concat nur xdate und xtime verwenden toString() und versuchen, diese zu analysieren. Auch dies scheint unnötig komplex zu sein. Wenn ich jetzt gerade annehme und xdate und xtime schon Date Felder sind, könnte man es so schreiben: MaterialCodeCSV.xdate + MaterialCodeCSV.xtime.
  • Wenn beide String Felder, Sie müssen sicherstellen, dass xdate formatiert yyyy/MM/dd und xtime ist HH:mm:ss. Dann könnten Sie .toString()
  • auch ausschließen, wenn beide String Felder sind, müssen Sie einen zusätzlichen Raum hinzufügen: MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
  • Zusätzlich im ersten Fall, dass Sie mit yyyy-MM-dd HH:mm:ss analysieren. Im zweiten Fall parsen Sie mit yyyy/mm/dd H:mm:ss. Dies lautet "Jahr/Minute/Tag". Auch gibt es nur eine Stunde Ziffer, die nach 9:59:59 Uhr keine Analyse erlaubt. Korrekt sollten Sie verwenden.

So schließt es so aussehen soll (wenn ich mich richtig annehmen und Sie verwenden richtig String Felder für xdate und xtime Formatieren):

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