Oracle JDBC驱动程序版本11.2.0.2.0中的夏令时处理是否已损坏?

时间:2011-07-14 01:17:03

标签: oracle jdbc timestamp oracle11gr2

我突然发现我在Oracle 11g R2上使用的Oracle JDBC驱动程序认为美国的夏令时在今年3月13日凌晨2:59:59之后开始。实际上,它是在凌晨1:59:59之后开始的。我做了一些额外的测试,发现该驱动程序的错误行为并不取决于它是否与Oracle 11g R2或Oracle 10g对话。此外,该驱动程序的所有可用先前版本都可以正确地更改夏令时。

这是一个已知的错误吗?有没有可用的修复程序?

2 个答案:

答案 0 :(得分:4)

我们的DBA进行了研究,发现这是一个已知错误,并且可以使用补丁。感谢所有关心此事的人,并为你的大脑寻找答案!

编辑2013年9月25日:在撰写本文时(2年多前),付费Oracle客户可以使用Oracle JDBC驱动程序11.2.0.2.0的补丁。我没有亲自测试过,但我相信在Oracle JDBC驱动程序11.2.0.4的当前版本中可以解决该问题,该驱动程序可从Oracle免费下载。

答案 1 :(得分:0)

是的我同意这是司机。如果您的列的类型为TIMESTAMP,那么Oracle将允许这些无效日期插入到数据库中,然后某些查询将抛出

查询数据库时出错。原因:java.sql.SQLException:ORA-01878:在datetime或interval中找不到指定的字段

该错误可能涉及defaultParameterMap

设置参数

时发生错误

原因:java.sql.SQLException:ORA-01878:在datetime或interval中找不到指定的字段

直到DB中更新“坏”记录。昨天更新的堆栈溢出上的这个线程有完整的细节。请参阅Chris Williams的答案

Oracle date compare broken because of DST