Tôi có một đối tượng java.util.Date
và tôi cần chèn nó vào trường ngày giờ trong MySQL ở định dạng UTC
.Các vấn đề về múi giờ của Java MySQL Dấu thời gian
java.util.Date date = myDateFromSomewhereElse;
PreparedStatement prep = con.prepareStatement(
"INSERT INTO table (t1, t2) VALUES (?,?)");
java.sql.Timestamp t = new Timestamp(date.getTime());
prep.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("PST"));
prep.setTimestamp(2, t, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(prep.toString());
nào mang lại cho tôi sự chuẩn bị chuỗi câu lệnh SQL:
INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');
Các dấu thời gian quay trở lại là dấu thời gian cùng không phụ thuộc vào múi giờ tôi chỉ định. Nó bỏ qua đối tượng Lịch với múi giờ mà tôi chỉ định. Điều gì đang xảy ra và tôi đang làm gì sai?
Múi giờ không thay đổi dấu thời gian. Họ chỉ thay đổi những gì được hiển thị khi ngày được hiển thị. – Jeremy
Có, tôi hiểu rằng dấu thời gian chỉ là một số mili giây kể từ epoch GMT, bất kể múi giờ. Vấn đề của tôi là thậm chí bằng cách chỉ định múi giờ, nó sẽ hiển thị cùng ngày hiển thị giống nhau (xem mặc dù tôi đã chỉ định các múi giờ khác nhau, ngày được hiển thị chính xác như nhau trong lệnh SQL cuối cùng). – Jordan
Tôi nghĩ rằng đây có thể là những gì bạn đang tìm kiếm: http://puretech.paawak.com/2010/11/02/how-to-handle-oracle-timestamp-with-timezone-from-java/ – Chris