Tôi đang sử dụng Java JDBC để viết ngày đến máy chủ sql 2008 và sau đó đọc lại.
Ngày được đọc thường xuyên hai ngày so với ngày được ghi.ngày liên tục hai ngày tắt
Tôi đang chèn hàng có chứa trường Ngày với câu lệnh đã chuẩn bị. Các giá trị ngày được cung cấp bởi:
java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ;
System.out.println(todaysDate.toString()) -> 2012-07-02
ps.setDate(8, todaysDate);
Sau khi viết ngày đến db, sql máy chủ chỉ cho tôi đúng ngày nếu tôi chạy:
select date from table_name where date!=null ->2012-07-02
Nếu tôi chạy cùng một truy vấn thông qua JDBC sau đó lấy giá trị ngày tháng từ kết quả sử dụng
java.sql.Date sqlDate = rs.getDate("date") ;
sqlDate.toString() ->2012-06-30
Hàng được chèn là hàng duy nhất trong bảng có ngày không trống nên có vẻ như đây không phải là trường hợp đọc sai bản ghi.
Tôi nghĩ rằng đây sẽ là một vấn đề nổi tiếng nhưng chỉ tham chiếu tôi có thể tìm thấy bởi tìm kiếm của Google cho một vấn đề "hai ngày nghỉ" không có câu trả lời dứt khoát.
Bất kỳ ý tưởng nào?
beeky (sống trong quá khứ)
Nếu bạn sử dụng PrepareStatement, không chuyển đổi từ hoặc thành Chuỗi. Vượt qua một đối tượng date (hoặc Timestamp) để setDate. –
Các múi giờ của máy chủ và máy khách là gì? –
Bạn có chắc chắn điều này không liên quan đến MM-DD-YYYY và DD-MM-YYYY không? Nếu ngày của bạn sẽ đến và từ chuỗi, chúng có thể được giải thích bởi các thiết lập miền địa phương theo những cách thú vị và bất ngờ (trong thời gian chạy máy khách và trong thư viện cơ sở dữ liệu và trong mã cơ sở dữ liệu). –