Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

JDBC có điều chỉnh Ngày trước khi chèn nó vào Oracle DB không? Làm cách nào để ngăn chặn điều này?

Vấn đề là Java Date các đối tượng không lưu trữ một múi giờ. Giá trị là luôn luôn theo UTC và được phân tích cú pháp và định dạng trong một múi giờ nhất định, thường là múi giờ mặc định của JVM.

Oracle DATE các cột cũng được lưu trữ mà không có múi giờ, nhưng phải đại diện cho ngày mà người dùng nhìn thấy. Trong 99,99% trường hợp, điều đó có nghĩa là ngày trong múi giờ mặc định của JVM.

Vì vậy, trình điều khiển JDBC lấy Timestamp / Date giá trị theo UTC, chuyển đổi nó thành múi giờ mặc định và lưu nó vào cơ sở dữ liệu.

Bạn đang sử dụng PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) phương pháp. Để kiểm soát múi giờ, hãy sử dụng PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) phương pháp. Trích dẫn 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. Oracle JDBC:dòng chảy kép

  2. Nơi lấy tệp jar Oracle cho 11.2.0.3 - xdb, aq, i18n, xmlparser

  3. Truy cập mạng bị từ chối bởi danh sách kiểm soát truy cập (ACL) trong Cơ sở dữ liệu Oracle 11g

  4. Tại sao chỉ mục NLSSORT không được sử dụng cho truy vấn này?

  5. làm thế nào để chỉ hiển thị thời gian trong oracle?