Frage

Ich bin mit Oracle 10g und haben Spalten mit TYPE_NAME

TIMESTAMP(6) WITH TIME ZONE

Wenn in Java-Klassen aufgeblasen sie kommen als

oracle.sql.TIMESTAMPTZ 

Aber DbUnit nicht verarbeiten kann Oracle bestimmte Klassen Strings Umwandlung zu XML zu schreiben. Ich frage mich, ob es eine einfache Möglichkeit für mich (zum Beispiel in meiner SELECT-Anweisung irgendwie) aus dieser Oracle spezifischen Zeitstempeln, um etwas in java.sql zu konvertieren.

War es hilfreich?

Lösung

Ich habe nicht mit diesem Problem fertig zu genau hatte, aber ich nehme an, dass es als eine Zeichenfolge aus der SELECT-Abfrage durchkommen, die wäre in Ordnung.

könnten Sie die to_char Funktion. Zur Umwandlung in einen String. z:

SQL> select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

D
----------------------------------
2008-10-21 17:00:43.501591

Dies würde dann von Ihrem Programm als String zu sehen. TZD enthält die Zeitzoneninformationen (von denen es keine in diesem Beispiel)

Später könnte dies dann von Java analysiert wird mit dem oracle.sql. TIMESTAMPTZ Klasse hat eine Methode dateValue genannt, die eine java.sql.Date Klasse zurückgibt.

Andere Tipps

Ich möchte bemerken, dass IYYY als Format für das Jahr mit möglicherweise keine gute Idee sein, wenn Sie wirklich das ISO Jahr erhalten möchten. Sie sollten YYYY statt IYYY verwenden.

Versuchen Sie SQL für 31.12.2012 mit

laufen
select to_char(timestamp'2012-12-31 00:00:00 +00:00', 'IYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

kehrt zurück. "2013-12-31 00: 00: 00,000000000", die nicht das Jahr ist, würde man erwarten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top