首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ojdbc5 & ojdbc发行的时间戳

ojdbc5 & ojdbc发行的时间戳
EN

Stack Overflow用户
提问于 2013-12-05 11:22:19
回答 1查看 499关注 0票数 2

JVM时区详细信息:印度标准时区/卡尔切卡019800000

DB时区详细信息:中央标准时间美洲/芝加哥3600000-21600000

样本代码:

代码语言:javascript
复制
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进行了测试,它与预期的打印db时间一样工作。

输出:

代码语言:javascript
复制
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打印db时间进行了测试。

输出:

代码语言:javascript
复制
2013-12-05 12:57:54.3508 
2013-12-05 01:27:54.3508 -6:00 

请建议Test-2ojdbc驱动程序11.2.0.3.0版本有什么问题,其中getTimestamp()打印本地时间。我的应用程序期望使用与db时间戳匹配的DB时间,比如getTimestamp()中的Test-1。

EN

回答 1

Stack Overflow用户

发布于 2013-12-05 11:26:48

几天前我们在我的公司也有过同样的问题。这样做的底线是,永远不要以字符串的形式获得时间戳(因为它是特定于数据库/驱动程序的),并且始终获取timestamp对象,并以任何方式使用SimpleDateFormat对其进行格式化。

值得一提的是,时间戳类是javadocs中令人厌恶的

由于上面提到的时间戳类与java.util.Date类之间的差异,建议代码不要将时间戳值一般视为java.util.Date的实例。时间戳和java.util.Date之间的继承关系实际上是表示实现继承,而不是类型继承。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20398665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档