2015-10-02 13 views
5

Tôi muốn chèn "0001-01-01" làm giá trị vào trường ngày bằng cách sử dụng Java PreparedStatement.Ngày chèn JDBC4 "0001-01-01"

Nhưng nó ném ngoại lệ khi tôi đã cố gắng này:

String sql = "insert into mytable values(?)" 
ps = conn.prepareStatement(sql); 
ps.setDate(1, java.sql.Date.valueOf("0001-01-01")); 
ps.executeUpdate(); // throws exceptions here. 

Lỗi này là:

Giá trị cung cấp không phải là một trường hợp giá trị của kiểu dữ liệu datetime. Kiểm tra dữ liệu nguồn cho các giá trị không hợp lệ. Ví dụ về giá trị không hợp lệ là dữ liệu của loại số có quy mô lớn hơn độ chính xác.

  • Nếu tôi không sử dụng PreparedStatement, tôi có thể chèn "0001-01-01". Tuy nhiên, câu lệnh chuẩn bị dường như không cho phép tôi chèn giá trị này.

  • Nó sẽ hoạt động nếu tôi chèn "1969-01-01" thay vì "0001-01-01".

Bất kỳ ý tưởng nào?

Cập nhật: Dưới đây là thông tin có thể cần thiết.

  1. chúng tôi sử dụng SQL Server 2012.
  2. chúng ta phải sử dụng "0001-01-01" vì những giá trị này đã có mặt ở. Tôi đang thay đổi một số mã rất cũ để sử dụng câu lệnh chuẩn bị. Vì vậy, tôi phải chèn các giá trị giống nhau trong cùng một chức năng.

Cập nhật 2:

Ngoài ra, tôi có thể chèn "0001-01-01" vào trường ngày mà không sử dụng câu lệnh chuẩn bị. tức là

String sql = "insert into mytable values('0001-01-01')" 
    java.sql.Statement statement = conn.createStatement(); 
    statement.executeUpdate(sql); 

Vì vậy, đó không phải là vấn đề của máy chủ sql hoặc vấn đề của trường db.

+0

Hãy thử sử dụng một ngày khác để đại diện cho ngày trống như 01-01-1900 – sagi

+0

Hãy xem nhanh mã nguồn của '.valueOf (...)';) – Hannes

+1

Bạn đang sử dụng trình điều khiển JDBC nào của JDBC? jTDS hoặc Microsoft? Và phiên bản nào? –

Trả lời

0

Bạn đã thử với java.sql.Date mới (ngày mới (1,1,1)) chưa?

+0

Tôi vừa thử điều này. Ngày đầu tiên mới (1,1,1) không được chấp nhận. Thứ hai, nó hoạt động mà không có lỗi, nhưng nó lưu trữ 1900-01-01 thay vì 0001-01-01. – Joey

0

Hãy thử sử dụng trình điều khiển JDBC phù hợp khác.

Các vấn đề liên quan