PDA

View Full Version : Probleme mit Timestamp



Ralf_2011
09-11-11, 12:20
Hallo,
ich habe ein Problem mit einem Javaprogramm welches aus einer CSV-Datei einen Timestamp in ein Tabellenfeld im Format Timestamp übertragen soll. Das Programm läuft schon seit Mai 2009 und importiert jeden Monat rund 2 Mio Datensätze die jeweils mehrere Timestamps enthalten. Nun kam es diesen Monat zum Abbruch mit dem Fehler
java.sql.SQLException: Data type mismatch. (1582-10-07-15.10.47.408011)

Nur dieser Timestamp konnte nicht verarbeitet werden. Ich benutze zum befüllen der Tabelle PreparedStatement
und die Methode setString. Die implizite Umwandlung der Zeichenkette in einen Timestamp hat auch immer funktioniert. Setzt man übrigens bei obigen Timestamp das jahr auf 1581 funktioniert es wieder.
Vielen dank für evtl. Tips.

Mit freundlichen Grüßen

Ralf

Pikachu
09-11-11, 15:17
java.sql.SQLException: Data type mismatch. (1582-10-07-15.10.47.408011)
An Tagen, die es nicht gibt, kann auch nichts stattgefunden haben. ;)

Siehe hier: Gregorianische Kalenderreform (http://de.wikipedia.org/wiki/1582#Gregorianische_Kalenderreform)

Ralf_2011
14-11-11, 11:46
Hallo,

vielen Dank für die Information. Leider nützt mir das alles nichts. Da wir die Daten vom DB2- Großrechner beziehen und diese dann auf die AS/400 repliziert werden. Beide Systeme haben bei der Verarbeitung (SQL) dieser Timestamps keine Probleme. Leider ist das die einzige Tabelle, die als CSV-Datei bereitgestellt wird. Ich habe mir jetzt mit folgenden Anweisungen geholgen :
String s = 'String für Timestamp'
DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
Timestamp ts = new Timestamp(df.parse(s).getTime()); ts.setNanos(Integer.parseInt(s.substring(20))* 1000);

Damit hat alles funktioniert. Bin mir aber nicht sicher ob da weitere Fallen warten

Mit freundlichen Grüßen
Ralf

Fuerchau
14-11-11, 11:57
Da fragt man sich sicherlich, was denn da so an den nicht existierenden Tagen (5.10.1582 - 14.10.1582) EDV-technisch so passiert sein soll :).

Ob die Felder auf dem Großrechner auch tatsächlich als Timestamp defineirt sind ?
Für diese Daten halte ich das eher für unwahrscheinlich.