Het probleem is dat Java Date objecten slaan geen tijdzone op. De waarde is altijd in UTC, en wordt geparseerd en geformatteerd in een bepaalde tijdzone, meestal de standaardtijdzone van de JVM.
Oracle DATE kolommen worden ook opgeslagen zonder tijdzone, maar moeten de datum vertegenwoordigen zoals deze door de gebruiker wordt gezien. In 99,99% van de gevallen betekent dat de datum in de standaardtijdzone van de JVM.
Het JDBC-stuurprogramma neemt dus de Timestamp / Date waarde, die zich in UTC bevindt, converteert deze naar de standaardtijdzone en slaat die op in de database.
U gebruikt de PreparedStatement.setTimestamp(int parameterIndex, Timestamp x)
methode. Om de tijdzone te beheren, gebruikt u de PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
methode. De javadoc citeren: