Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy JDBC dostosowuje datę przed wstawieniem jej do bazy danych Oracle? Jak temu zapobiec?

Problem polega na tym, że Java Date obiekty nie przechowują strefy czasowej. Wartość to zawsze w UTC i jest analizowany i formatowany w określonej strefie czasowej, zwykle domyślnej strefie czasowej JVM.

Oracle DATE kolumny są również przechowywane bez strefy czasowej, ale powinny przedstawiać datę widzianą przez użytkownika. W 99,99% przypadków oznacza to datę w domyślnej strefie czasowej JVM.

Tak więc sterownik JDBC przyjmuje Timestamp / Date wartość, która jest w UTC, konwertuje ją na domyślną strefę czasową i zapisuje ją w bazie danych.

Używasz PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) metoda. Aby kontrolować strefę czasową, użyj PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) metoda. Cytując javadoca:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL:jak monitować użytkownika o wprowadzenie danych w procedurze?

  2. Jak zainstalować opcję proceduralną w Oracle 11gr2?

  3. Przeanalizuj json przez json_table w Oracle 18

  4. ORA-01843 nie jest prawidłowym miesiącem- Porównywanie dat

  5. Jak zwrócić listę obsługiwanych języków w Oracle?