JDBC4插入日期"0001-01-01"

Joe*_*oey 5 java sql-server date jdbc prepared-statement

我想使用Java 将"0001-01-01"作为值插入到日期字段中PreparedStatement.

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

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.
Run Code Online (Sandbox Code Playgroud)

错误是:

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

  • 如果我不使用PreparedStatement,我可以插入"0001-01-01".但是,prepare语句似乎不允许我插入此值.

  • 如果我插入"1969-01-01"而不是"0001-01-01",它将起作用.

有任何想法吗?

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

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

更新2:

另外,我可以在不使用prepare语句的情况下在日期字段中插入"0001-01-01".即

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

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

ern*_*oel 0

Try using the different suitable JDBC driver.