我想使用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”,它将起作用。
有什么想法吗?
更新 以下是可能需要的更多信息。
更新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字段的问题。
答案 0 :(得分:0)
尝试使用不同的合适JDBC驱动程序。