Đầu tiên, bạn đang nhầm lẫn java.util
với java.sql
. Khi sử dụng PreparedStatement # setDate ()
và ResultSet # getDate ()
, bạn cần java.sql.Date
. Tương tự, khi sử dụng PreparedStatement # setTimestamp ()
và ResultSet # getTimestamp ()
bạn cần java.sql.Timestamp
.
Thứ hai, điều quan trọng là phải hiểu rằng java.sql.Date
chỉ đại diện cho ngày (năm, tháng, ngày) và không ít hơn hoặc nhiều hơn. Điều này sẽ được ánh xạ tới một SQL DATE
Loại lĩnh vực. java.sql.Timestamp
đại diện cho dấu thời gian (năm, tháng, ngày, giờ, phút, giây, mili giây), chính xác như java.util.Date
và java.util.Calendar
làm. Điều này sẽ được ánh xạ tới một TIMESTAMP
trong SQL hoặc DATETIME
loại trường.
Đối với múi giờ, bạn cần nó khi cơ sở dữ liệu không lưu trữ thông tin múi giờ (do đó, tất cả các dấu thời gian được lưu trữ theo UTC (GMT)). Sau đó, bạn có thể chuyển Lịch
trong đó chứa thông tin về múi giờ hiện tại, để trình điều khiển JDBC có thể điều chỉnh dấu thời gian UTC thành dấu thời gian phù hợp với múi giờ. Nếu đó là ví dụ như GMT + 1, thì trình điều khiển JDBC sẽ thêm một giờ vào dấu thời gian trước khi quay trở lại.