首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Oracle日期字段中的cachedrowset时,如何获取完整的日期和时间数据

在使用Oracle日期字段中的cachedrowset时,如何获取完整的日期和时间数据
EN

Stack Overflow用户
提问于 2012-11-11 15:31:22
回答 1查看 6.1K关注 0票数 1

我使用结果集从oracle获取数据,然后将它们填充到cachedrowset中。但是当我在数据库中获取日期字段并打印它时,它只打印日期。我检查了接口,知道getDate()方法返回java.sql.date,并且sql.date的时间被强制转换为0。我测试过,如果我调用resultset.getString("datefield"),它可以获取完整的日期和时间数据,那么有没有办法使用cahcedrowset获取完整的日期和时间数据,谢谢

这是我的源代码

代码语言:javascript
复制
    CachedRowSet rs = null;
    try {
    rs = executeQuery("select * from t_web_order_result ");
    if (rs != null && rs.next()) {
            KKLog.info(rs.getDate("stime"));//2012-04-24,it should be 2012-04-24 09:23:33
        KKLog.info(rs.getString("stime"));
    }
    } catch (SQLException e) {
        logErr("queryCheckers Err", e);
    } finally {
        closeCachedRowset(rs);
    }

executeQuery方法

代码语言:javascript
复制
    CachedRowSet rowset = null;
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet rs = null;
    try {
        connection = getConnection();
        statement = connection.prepareStatement(sql);
        for (int i = 0; i < params.length; i ++) {
            statement.setObject(i + 1, params[i]);
        }
        rs = statement.executeQuery();
        rowset = new CachedRowSetImpl();
        rowset.populate(rs);
        rs.close();
        statement.close();
    } finally {
         //close....            
    }
    return rowset;

我用了三种方法打印日志

代码语言:javascript
复制
    KKLog.info(rs.getDate("stime"));
    KKLog.info(rs.getString("stime"));
    KKLog.info(rs.getTimestamp("stime"));

日志内容为

代码语言:javascript
复制
    12-11-11 17:06:11 2012-04-24 
    12-11-11 17:06:11 2012-04-24 
    12-11-11 17:06:11 2012-04-24 00:00:00.0 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-11 16:12:16

如果您想从数据库中获取日期和时间,则必须使用

代码语言:javascript
复制
KKLog.info(rs.getTimestamp("stime"))

如果日期和时间存储为date数据类型或timestamp,这将从表中提供日期和时间。还要注意,您必须使用java.sql.Date而不是java.util.Date

更新1

如果使用cachedrowset,则会有一些与从数据库获取时间部分相关的bugs

我尝试使用CachedRowSet,但是缺少time部分。为了解决此问题,请在数据库连接部分中添加以下内容。我也能看到时间的部分。

代码语言:javascript
复制
    java.util.Properties prop = new java.util.Properties();
    prop.put("oracle.jdbc.V8Compatible", "true"); 
    prop.put("user", "user");
    prop.put("password", "password");
   Connection conn = 
  DriverManager.getConnection("jdbc:oracle:thin:@server:port:SID",prop);    

添加prop.put("oracle.jdbc.V8Compatible", "true");是解决此问题的关键。

我之前的日期和时间

代码语言:javascript
复制
2012-11-08 00:00:00

添加V8Compatible

代码语言:javascript
复制
2012-11-08 13:28:35

希望这能有所帮助

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

https://stackoverflow.com/questions/13329391

复制
相关文章

相似问题

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