Das Problem ist, dass Java Date
Objekte speichern keine Zeitzone. Der Wert ist immer in UTC und wird in einer bestimmten Zeitzone geparst und formatiert, normalerweise in der Standardzeitzone der JVM.
Oracle DATE
Spalten werden ebenfalls ohne Zeitzone gespeichert, sollten aber das Datum darstellen, wie es der Benutzer sieht. In 99,99 % der Fälle bedeutet dies das Datum in der Standardzeitzone der JVM.
Der JDBC-Treiber nimmt also den Timestamp
/ Date
Wert, der in UTC angegeben ist, konvertiert ihn in die Standardzeitzone und speichert diese in der Datenbank.
Sie verwenden den PreparedStatement.setTimestamp(int parameterIndex, Timestamp x)
Methode. Um die Zeitzone zu steuern, verwenden Sie PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
Methode. Zitieren des javadoc: