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: