sql >> Database teknologi >  >> RDS >> Oracle

Justerer JDBC datoen, før den indsætter den i Oracle DB? Hvordan forhindrer jeg dette?

Problemet er, at Java Date objekter gemmer ikke en tidszone. Værdien er altid i UTC, og er parset og formateret i en given tidszone, normalt JVM'ens standardtidszone.

Oracle DATE kolonner gemmes også uden tidszone, men skal repræsentere den dato, som brugeren har set. I 99,99 % af tilfældene betyder det datoen i JVM'ens standardtidszone.

Så JDBC-driveren tager Timestamp / Date værdi, som er i UTC, konverterer den til standardtidszonen og gemmer den i databasen.

Du bruger PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) metode. For at kontrollere tidszonen skal du bruge PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) metode. Citerer javadoc:




  1. Brug af en Join med grupperede datarækker

  2. Slet xml-node fra SQL Server 2008 r2 tabelkolonne baseret på attributværdi

  3. Barkers notation

  4. højre join versus venstre join