2017-06-29 2 views
0

Ich möchte den Zeitstempel (6) Datentyp Wert einer Spalte aus der Datenbank mit Java extrahieren. Ich bin nicht in der Lage, eine Methode in reaultset oder resultsetmetadata zu finden, die mir dabei helfen kann. Wenn ich die Methode timestamp/time/Date im Resultset verwende, ändert sich das Format. Ich möchte exaktes Format des Zeitstempels (6) für zB: 01-JAN-0001 02.30.32.001001 PMWie entpacken Sie den Zeitstempel (6) Datentyp Wert einer Spalte von einer Datenbank zu CSV oder Anzeige auf der Konsole mit Java?

abrufen Ich wäre dankbar, wenn mir jemand mit der Lösung für dieses Problem helfen könnte.

+0

Ein Zeitstempel hat kein Format - er wird intern als eine Reihe von Bytes gespeichert, die jeweils den einen Teil der Komponenten Jahr, Monat, Tag, Stunde, Minute, Sekunde und Sekundenbruchteile darstellen. Wenn Sie es abrufen, führt die von Ihnen verwendete Benutzerschnittstelle eine implizite Konvertierung in ein für Menschen lesbares Format durch (normalerweise mit dem Sitzungsparameter 'NLS_TIMESTAMP_FORMAT'), aber dies wird nicht in der Datenbank gespeichert oder an Ihre Java-Anwendung übertragen. Wenn Sie es mit einem Format möchten, müssen Sie es in eine Zeichenfolge konvertieren und angeben, wie es formatiert werden soll. – MT0

+0

Bitte zeigen Sie den Code, den Sie gerade verwenden, und genau, was Sie erreichen möchten. –

Antwort

0

Ich würde den Wert mit resultSet.getTimestamp() erhalten und es in einen String in Java umwandeln, wobei darauf zu achten ist, dass die separat gespeicherten Nanosekunden nicht verloren gehen, sondern immer in einen String in der Datenbank konvertiert werden können. Zum Beispiel mit Oracle:

create table t1 (ts1 timestamp(6) default systimestamp); 
insert into t1 select systimestamp from dual; 
select to_char(ts1, 'YYYY-MM-DD HH24:MI:SS.SSSSSSS') from t1; 

Ändern Sie das Datumsformat für Ihre Zielgruppe. Ein Zeitstempel wird nicht in einem bestimmten Format gespeichert, er wird immer konvertiert. Es ist nur so, dass Ihre Datenbank und die Java-Objekte unterschiedliche Standardwerte haben.

+0

Aber rs.getTimestamp (int columnIndex) .toString() konvertiert die Daten wie JJJJ-MM-TT HH: mm: ss: s-Format. –

+0

@SanketChandak Verwenden Sie dann nicht ['Timestamp.toString()'] (http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toString--), als Dokumentiert es gibt ein sehr spezifisches Format zurück, wenn Sie etwas anderes wollen, dann sollten Sie einen Datumsformatierer verwenden (und ich würde vorschlagen, dass Sie 'toLocalDateTime()' verwenden und das gewünschte Format mit dem Paket 'java.time' anwenden. –

+0

Or ein klassisches SimpleDateFormat.Achten Sie nur auf die Nanosekunden, wenn Sie sie brauchen, da sie nicht standardmäßig behandelt werden. – user2612030

Verwandte Themen