ResultSet#getDate()语义
问题内容:
我们从迁移到ojdbc6-11.2.0.3.0
,ojdbc7-12.1.0.1
并观察到ResultSet#getDate()
语义上的变化。以前,java.sql.Date
根据上指定的合同,通过将小时,分钟,秒和毫秒设置为零,可以对返回的值进行“规范化”
java.sql.Date
。与ojdbc7
此不再的情况下和java.sql.Date
具有小时,分,秒和毫秒根据数据库上的值来设置。
我查看了Javadoc,ResultSet#getDate()
但没有明确指出哪种行为是正确的。我会以为旧行为是规范的意图。我对吗?我们遇到驱动程序错误了吗?
问题答案:
这显然是一个错误,因为该类的文档java.sql.Date
指出
为了符合SQL DATE的定义,必须通过将与实例相关联的特定时区中的小时,分钟,秒和毫秒设置为零,来“标准化”
java.sql.Date实例包装的毫秒值。 。