sql >> Databáze >  >> RDS >> Oracle

Upravuje JDBC datum před jeho vložením do databáze Oracle? Jak tomu mohu zabránit?

Problém je v tom, že Java Date objekty neukládají časové pásmo. Hodnota je vždy v UTC a je analyzován a formátován v daném časovém pásmu, obvykle výchozím časovém pásmu JVM.

Oracle DATE sloupce jsou také uloženy bez časového pásma, ale měly by představovat datum, které vidí uživatel. V 99,99 % případů to znamená datum ve výchozím časovém pásmu JVM.

Takže ovladač JDBC přebírá Timestamp / Date hodnota, která je v UTC, ji převede na výchozí časové pásmo a uloží ji do databáze.

Používáte PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) metoda. Chcete-li ovládat časové pásmo, použijte PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) metoda. Cituji javadoc:




  1. Příklady WEEK() – MySQL

  2. Nastavení a konfigurace skupiny Always-on Availability Group na SQL Server

  3. Návrat XFS na Linux

  4. eclipse - entity JPA z tabulek, žádná schémata nejsou uvedena