Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Passt JDBC das Datum an, bevor es es in Oracle DB einfügt? Wie verhindere ich das?

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: