Tôi đang sử dụng PreparedStatement với Timestamp trong mệnh đề where:PreparedStatement và setTimestamp trong oracle jdbc
PreparedStatement s=c.prepareStatement("select value,utctimestamp from t where utctimestamp>=? and utctimestamp<?");
s.setTimestamp(1, new Timestamp(1273017600000L)); //2010-05-05 00:00 GMT
s.setTimestamp(2, new Timestamp(1273104000000L)); //2010-05-06 00:00 GMT
ResultSet rs = s.executeQuery();
if(rs.next()) System.out.println(rs.getInt("value"));
Kết quả tôi nhận được là khác nhau, khi tôi có múi giờ khác nhau trên máy tính của khách hàng. Đây có phải là lỗi trong Oracle jdbc không? hoặc hành vi chính xác?
Phiên bản cơ sở dữ liệu Oracle là 10.2 và tôi đã thử với oracle jdbc phiên bản trình điều khiển mỏng 10.2 và 11.1.
Tham số là Dấu thời gian và tôi dự kiến sẽ không có chuyển đổi thời gian nào được thực hiện trên đường. Kiểu cột cơ sở dữ liệu là DATE, nhưng tôi cũng đã kiểm tra nó với kiểu cột TIMESTAMP có cùng kết quả.
Có cách nào để đạt được kết quả chính xác không? Tôi không thể thay đổi múi giờ mặc định trong toàn bộ ứng dụng thành UTC.
Nhờ sự giúp đỡ của bạn
Vui lòng chỉnh sửa câu hỏi của bạn và thêm các loại t_begin và t_end. –