AFAIK,java日期类型独立于时区,这意味着它将特定时刻表示为长类型值。我发现这里真的很奇怪。
这是我试图插入的原始值。
(http-0.0.0.0-9080-4)1352955600000< - 长整数。
(http-0.0.0.0-9080-4)2012年11月15日00:00:00美国东部时间< - 用户友好格式。
完成插入Oracle 11g数据库后,值已更改!
(http-0.0.0.0-9080-4)1352952000000
(http-0.0.0.0-9080-4)2012年11月14日星期三23:00:00
怎么会发生这种情况?更奇怪的是它只发生在特定的环境中,比如Jboss。 我目前正在使用以下环境。
有没有人可以给我一些线索或链接来提供帮助? 它真的让我烦恼!!
我在这里添加了更多信息。 我在java中使用Date类型,在oracle中使用TIMESTAMP WITH TIMEZONE。
我在日期存储了价值(" 11/15/2012",MM / dd / yyyy,US / Eastern)。
并使用iBatis将此值发送给Oracle。它显示为
12/11/15 00:00:00.000000000 -04:00
这是不正确的。它的时区应该是-05:00,因为DST将在11月结束。
而且,当我从我的java代码中获取此值时,
它返回 2012年11月14日星期三23:00:00美国东部时间,我预计 2012年11月15日星期六00:00:00 。
解决了问题。
谢谢伙计们。我找到了原因。它是ojdbc驱动程序的已知错误。 请参阅此link。