1

我们刚刚从 ojdbc14 切换到 ojdbc6,并注意到当我们通过准备好的语句将 javax.sql.Time 值插入 Oracle 列时preparedStatement.setTime(1, new javax.sql.Time(new Date().getTime())),它的行为发生了变化。它曾经将日期和时间信息都插入到表中,但使用新驱动程序时,似乎只捕获了时间部分,我们在数据库中看到的值是 1970 年 1 月 1 日。

现在,情况很明显,我的问题是在哪里可以找到描述此行为的官方文档或更改说明。

谢谢

4

1 回答 1

2

在我看来,通过将值作为日期/时间对象(例如 )传递并按原样java.sql.Timestamp读取它们会更好地为您服务。因此,您将使用public void setTimestamp(int parameterIndex, Timestamp x)设置相应的值。这使用起来更干净。

然后,您可以在从数据库中读取数据后,使用 Java SimpleDateFormat 将数据格式化为您自己喜欢的格式。

但是,您可以在此 Oracle JDBC 驱动程序文档中找到一些记录在案的时间戳使用错误。这些可能与您没有直接关系,但请查看以下内容:#BUG-6749320、#6870832、#7028625、#6441084

您可能想在此处阅读有关更改的信息:“DATE 和 TIMESTAMP 发生了什么?” Oracle JDBC FAQ 部分提供。

于 2012-08-07T22:31:18.893 回答