JDBC4插入日期“0001-01-01”

时间:2015-10-02 18:45:16

标签: java sql-server date jdbc prepared-statement

我想使用Java PreparedStatement将“0001-01-01”作为值插入日期字段。

但是当我尝试这个时它会抛出异常:

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.

错误是:

  

提供的值不是数据类型datetime的有效实例。检查源数据中的无效值。无效值的示例是数字类型的数据,其比例大于精度。

  • 如果我不使用PreparedStatement,我可以插入“0001-01-01”。然而, prepare语句似乎不允许我插入此值。

  • 如果我插入“1969-01-01”而不是“0001-01-01”,它将起作用。

有什么想法吗?

更新 以下是可能需要的更多信息。

  1. 我们使用sql server 2012。
  2. 我们必须使用“0001-01-01”,因为这些值已经存在。我正在更改一些非常旧的代码以使用prepare语句。所以我必须在相同的功能中插入相同的值。
  3. 更新2:

    此外,我可以在不使用prepare语句的情况下将“0001-01-01”插入日期字段。即。

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

    所以这不是sql server的问题或db字段的问题。

1 个答案:

答案 0 :(得分:0)

尝试使用不同的合适JDBC驱动程序。