Das Datum abrufen aus einer Ergebnismenge, die für die Verwendung mit java.Zeit-Klassen
Ist es sowieso um einen java.Zeit (neu in Java 8) kompatiblen time-Klasse aus einem ResultSet
?
Ich bin mir bewusst, die Sie verwenden können ResultSet
's getDate
oder getTimestamp
aber diese Methode zurück java.sql.Date
/java.sql.Timestamp
Objekte, die sind jetzt veraltet, so scheint es, wie eine schlechte Gewohnheit, die Sie verwenden, um erstellen Sie eine ZonedDateTime
oder ähnliches.
java.sql.Datum etc. sind offiziell NICHT veraltet (keine deprecated-javadoc-tag oder die annotation festgelegt). Über Ihre Frage, look for JDBC 4.2 - Unterstützung db (eigentlich in den meisten Fällen?) und verwenden Sie dann die vorhandenen Methoden
setObject()
und getObject()
InformationsquelleAutor Thomas Paulin | 2015-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten Datenbank-Anbieter nicht unterstützen JDBC 4.2 noch. Diese Spezifikation sagt, dass die neue
java.time
-Arten wieLocalDate
wird/sollte unterstützt werden, mit den vorhandenen MethodensetObject(...)
undgetObject()
. Keine explizite Konvertierung ist erforderlich und geboten (keine API-änderung).Einen workaround für die fehlende Unterstützung kann die manuelle Konvertierung wie beschrieben auf der Derby-mailing-Liste.
Etwas wie:
Wie Sie sehen können, diese Konvertierungen verwenden die nicht veraltet Arten
java.sql.Date
etc., siehe auch die javadoc.Die Umbauten
toLocalDate()
etc. nur delegieren, um veraltete Methoden wiedate.getYear()
mit Mitternacht der lokalen Zeitzone (wie erforderlich und angegeben für JDBC), siehe Quellcode. Wenn Sie versuchen, eine UNGÜLTIGE lokale Zeit, die nicht existiert, aufgrund der Zeitumstellung, dann werden Sie wahrscheinlich beobachten, einige seltsame Zeit, vorwärts springen (betrifft vor allem die ZEIT - und TIMESTAMP-Typen). Ansonsten ist der Umbau sollte sicher sein, solange Sie einen JDBC-Treiber, der Respekt der Spezifikation eng, nämlich zu interpretieren, die Konvertierung in lokale tz.Hmm... mit Mitternacht? Was ist, wenn das Datum nicht um Mitternacht an diesem Tag?
Ob Mitternacht, existiert nicht aufgrund einer Lücke zwischen standard-und Sommerzeit dann die Zeit, in der Regel nach vorne springen, indem Sie die Größe der Lücke. Dies ist das standard-Verhalten in alten Java sowie in new
java.time
-Klassen. Zum Beispiel: Amerika/Sao_Paolo sehen nicht Mitternacht, am 15ten Oktober dieses Jahres ist daher der früheste lokale Zeit an diesem Tag werden 1AM.Eigentlich
java.time
Seite-weicht dem Problem völlig durch den Aufruf der MethodeatStartOfDay
- es ist also keine Frage, was es bedeutet, in der Erwägung, dass im Wortlaut, darunter "Mitternacht" macht mich immer Wunder.InformationsquelleAutor Meno Hochschild
Neue Methoden Auf
Timestamp
Java 8 enthält neue Methoden, die auf der
java.sql.Timestamp
Klasse zum konvertieren von java.Zeit-Objekte. Dieser convenience-Methoden sind eine Notlösung, bis die JDBC-Treiber können aktualisiert werden, für die neue Daten-Typen.toInstant
toLocalDateTime
valueOf
from
Dito Für
Date
&Time
Den
java.sql.Date
undjava.sql.Time
haben die Klassen ähnlich wie in java.Zeit conversion-Methoden Hinzugefügt, die in Java 8 als gut.InformationsquelleAutor Basil Bourque