Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah JDBC menyesuaikan Tanggal sebelum memasukkannya ke dalam Oracle DB? Bagaimana cara mencegah hal ini?

Masalahnya adalah Java Date objek tidak menyimpan zona waktu. Nilainya selalu dalam UTC, dan diuraikan serta diformat dalam zona waktu tertentu, biasanya zona waktu default JVM.

Oracle DATE kolom juga disimpan tanpa zona waktu, tetapi harus mewakili tanggal seperti yang terlihat oleh pengguna. Dalam 99,99% kasus, itu berarti tanggal dalam zona waktu default JVM.

Jadi, driver JDBC mengambil Timestamp / Date nilai, yang ada di UTC, mengonversinya ke zona waktu default, dan menyimpannya ke database.

Anda menggunakan PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) metode. Untuk mengontrol zona waktu, gunakan PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) metode. Mengutip javadoc:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengekstrak sub-tag XML dari gumpalan di Oracle melalui SQL

  2. NLS_DATE_FORMAT dengan JDBC

  3. impdp pompa data Oracle ke server jarak jauh

  4. mengeksekusi `EXECUTE IMMEDIATE` Pernyataan Oracle Mendapatkan Kesalahan

  5. Konversi KASUS dari IIF