Datetime 使用JDBC的Oracle中的日期问题

Datetime 使用JDBC的Oracle中的日期问题,datetime,jdbc,oracle10g,Datetime,Jdbc,Oracle10g,我有以下场景: 两台计算机: 第一台计算机在Windows Vista下运行,第二台计算机在Linux下运行,两者都连接到Oracle 10g。 Oracle 10g正在第二台计算机上运行 我已经用Java编写了一个测试程序,使用ojdbc14.jar连接到Oracle 此测试程序仅连接到数据库,从特定表中检索一些数据并打印日期字段的值 在第一台机器上运行程序测试时,我的日期是'10/01/1987' 在第一秒钟运行程序测试时,我的日期是'09/30/1987' 当我使用plsqldevelop

我有以下场景: 两台计算机: 第一台计算机在Windows Vista下运行,第二台计算机在Linux下运行,两者都连接到Oracle 10g。 Oracle 10g正在第二台计算机上运行

我已经用Java编写了一个测试程序,使用ojdbc14.jar连接到Oracle

此测试程序仅连接到数据库,从特定表中检索一些数据并打印日期字段的值

在第一台机器上运行程序测试时,我的日期是'10/01/1987' 在第一秒钟运行程序测试时,我的日期是'09/30/1987'

当我使用plsqldeveloper显示此数据时,日期字段看起来像'10/01/1987'

有人能解释为什么


提前感谢

对我来说,这似乎是一个时区问题-一台机器设置为美国时间,另一台设置为GMT或UTC?因此,日期相隔一天,但可能具有相同的UTC/long值

在Oracle中是否使用时间戳作为列类型?e、 g

...
"created" timestamp(6) not null default systimestamp enable,
...
然后使用java.sql.Timestamp?e、 g:

...
Timestamp created = rs.getTimestamp("created");
...

我认为Oracle可能会将日期存储为GMT值。Oracle所做的是正确的,但是当从Oracle数据库读取值时,您的客户端需要调整到GMT日期。“plsqldeveloper”显示了从Windows框中查询时GMT-7调整的时间,以及在Linux框中查询时的原始GMT。我想说Linux盒(或Linux盒上的plsqldeveloper)需要额外的配置来进行GMT调整

顺便说一句,如果它实际上是一个GMT问题,那么它也必须存储一天中的时间,因为这是GMT-7调整看起来可以休息一整天的唯一方式。
所以,我很好奇你的日期上有什么“一天中的时间”标记。另外,当你登录到Oracle管理工具并查看其中的日期时,它有多大的不同?(如果你没有Oracle,你可以下载light/express edition,并且它很容易设置)

一定要检查
NLS\u日期格式设置

这可以在两台计算机之间进行不同的配置或默认设置

有关更多示例,请参见此URL: