JVM 时区详细信息:印度标准 TimeAsia/Calcutta019800000
DB 时区详细信息: Central Standard TimeAmerica/Chicago3600000-21600000
示例代码:
String sql = "select systimestamp as base from dual";
....
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
System.out.println(rs.getTimestamp("base"));
System.out.println(rs.getString("base"));
}
测试 1:我使用 ojdbc14.jar 10.1.0.3.0 进行了测试,它按预期工作,打印数据库时间
输出:
2013-12-05 01:23:57.141583
2013-12-5 1.23.57.141583000 -6:0
测试 2:我使用 ojdbc5.jar 和 ojdbc6.jar 11.2.0.3.0 进行了测试,getTimestamp 打印本地时间,而 getString 打印数据库时间。
输出:
2013-12-05 12:57:54.3508
2013-12-05 01:27:54.3508 -6:00
请建议使用 getTimestamp() 打印本地时间的 Test-2 ojdbc 驱动程序版本 11.2.0.3.0 有什么问题。我的应用程序期望在 getTimestamp() 中像 Test-1 这样的数据库时间与数据库时间戳匹配。