1

AFAIK,java Date 类型独立于 Timezone,这意味着它表示特定的时间时刻作为 long 类型的值。我在这里发现了非常奇怪的事情。

这是我尝试插入的原始值。

(http-0.0.0.0-9080-4) 1352955600000 <-- 长整数。

(http-0.0.0.0-9080-4) Thu Nov 15 00:00:00 EST 2012 <-- 用户友好格式。

在我完成插入 Oracle 11g 数据库后,值发生了变化!

(http-0.0.0.0-9080-4) 1352952000000

(http-0.0.0.0-9080-4) 2012 年 11 月 14 日星期三 23:00:00 EST

怎么会这样??更奇怪的是它只发生在特定的环境中,比如 Jboss。我目前正在使用以下环境。

  • 爪哇 1.6
  • 巴蒂斯 2.34
  • jboss-5.1(服务器)
  • Tomcat 6.0(本地)
  • 甲骨文 11g

有没有人可以给我一个线索或链接以提供帮助?它真的让我烦恼!


我在这里添加更多信息。我在 java 中使用 Date 类型,在 oracle 中使用 TIMESTAMP WITH TIMEZONE。

我在日期中存储了值(“11/15/2012”,MM/dd/yyyy,美国/东部)。

并使用 iBatis 将此值发送给 Oracle。它显示为

2015 年 12 月 11 日 00:00:00.000000000 -04:00

这是不正确的。它的时区应该是 -05:00,因为 DST 将在 11 月结束。

而且,当我从我的 java 代码中得到这个值时,

它返回 Wed Nov 14 23:00:00 EST 2012,我预计是Thu Nov 15 00:00:00 EST 2012

问题解决了。

谢谢各位。我找到了原因。这是 ojdbc 驱动程序的已知错误。请参考此链接

4

1 回答 1

0

这是 ojdbc 的已知错误。升级库后,问题从未发生。

参考这个

https://forums.oracle.com/thread/356702

于 2013-10-11T21:21:34.903 回答