Erstens verwirren Sie java.util
mit java.sql
. Bei Verwendung von PreparedStatement#setDate()
und ResultSet#getDate()
, benötigen Sie java.sql.Date
. Analog bei Verwendung von PreparedStatement#setTimestamp()
und ResultSet#getTimestamp()
Sie benötigen java.sql.Timestamp
.
Zweitens ist es wichtig, dieses java.sql.Date
zu verstehen stellt nur das Datum dar (Jahr, Monat, Tag) und nicht weniger oder mehr. Dies ist auf ein SQL DATE
abzubilden Feldtyp. Der java.sql.Timestamp
repräsentiert den Zeitstempel (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde), genau wie der java.util.Date
und java.util.Calendar
tut. Diese soll auf einen SQL TIMESTAMP
abgebildet werden oder DATETIME
Feldtyp.
Die Zeitzonen benötigen Sie, wenn die Datenbank keine Zeitzoneninformationen speichert (daher werden alle Zeitstempel in UTC (GMT) gespeichert). Sie können dann einen Calendar
übergeben in dem Informationen über die aktuelle Zeitzone enthalten sind, damit der JDBC-Treiber den UTC-Zeitstempel an den Zeitstempel anpassen kann, der der Zeitzone entspricht. Wenn es beispielsweise GMT+1 ist, fügt der JDBC-Treiber dem Zeitstempel eine Stunde hinzu, bevor er zurückkehrt.