sql >> Databasteknik >  >> RDS >> Oracle

Justerar JDBC datumet innan det infogas i Oracle DB? Hur förhindrar jag detta?

Problemet är att Java Date objekt lagrar inte en tidszon. Värdet är alltid i UTC, och tolkas och formateras i en given tidszon, vanligtvis JVM:s standardtidszon.

Oracle DATE kolumner lagras också utan tidszon, men bör representera datumet som användaren ser det. I 99,99 % av fallen betyder det datumet i JVM:s standardtidszon.

Så JDBC-drivrutinen tar Timestamp / Date värde, som är i UTC, konverterar det till standardtidszonen och sparar det i databasen.

Du använder PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) metod. För att kontrollera tidszonen, använd PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) metod. Citerar javadoc:




  1. Lösenordshash returnerar falskt

  2. hur kan jag köra CMD-kommandot i c#-konsolapplikationen?

  3. Hur man migrerar mina tabeller från min asp.net kärnapp på linux

  4. Gruppera datum i en för varje slinga