【发布时间】:2013-07-10 13:52:07
【问题描述】:
我们从 ojdbc6-11.2.0.3.0 迁移到 ojdbc7-12.1.0.1 并观察到 ResultSet#getDate() 语义的变化。以前,返回的java.sql.Date 将通过根据java.sql.Date 上指定的合同将小时、分钟、秒和毫秒设置为零来“标准化”。 ojdbc7 不再是这种情况,java.sql.Date 根据数据库上的值设置小时、分钟、秒和毫秒。
我查看了ResultSet#getDate() 的Javadoc,它没有明确说明哪种行为是正确的。我会假设旧的行为是规范的意图。我对吗?我们是否遇到了驱动程序错误?
【问题讨论】:
-
出现 ojdbc7-12.1.0.1 的另一个相关问题:PreparedStatement.setDate(index, java.sql.Date) 在将值存储到数据库之前不会截断任何时间组件。它可能只发生在 10g 上(我没有 11g 或 12c 在其他版本上测试它)。