我们已与Oracle支持部门取得联系,他们的答复如下(很遗憾,由于需要Oracle支持帐户,因此我无法提供答案的链接):
新行为按预期工作 :
在JDBC 12.1.0.1中,getDate和setDate不会截断日期的时间部分。此行为与时间部分被截断的JDBC
11.2.0.X不同。根据错误14389749、17228297的更改,这是有意的,并且12c驱动程序的行为正确。
解决方法为我提供了工作:
解决方法#1: 修改应用程序以不插入时间分量(例如,使用静态UtilMethod)
public static Date truncateTime(Date date) { Calendar calendar =Calendar.getInstance(); calendar.setTime(date);calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0);return calendar.getTime(); }解决方法2: 从MOS下载并应用补丁19297927:(My Oracle Support)
- 单击补丁和更新选项卡。
- 输入上面的补丁号,然后单击“搜索”。
- 从列表中单击与您的平台相对应的补丁号
- 点击下载按钮下载补丁。
- 在下载之前,请阅读所有适用的说明,然后单击“下载”按钮。
After patching replace ojdb7.jar in
%Oracle_Home%oracle_commonmodulesoracle.jdbc_12.1.0and add
-Doracle.jdbc.DateZeroTime=trueto your JVM Arguments



