我从oracle获取带有结果集的数据,然后将它们填充到cachedrowset
。但是当我在数据库中获取日期字段并打印它时,它只打印日期。我检查api并知道getDate()
方法返回java.sql.date
,sql.date
的时间被转换为0.我测试如果我调用resultset.getString("datefield")
,它可以得到整个日期和时间数据,有没有办法使用cahcedrowset
获取整个日期和时间数据,谢谢
这是我的源代码
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方法
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;
我用三种方法打印日志
KKLog.info(rs.getDate("stime"));
KKLog.info(rs.getString("stime"));
KKLog.info(rs.getTimestamp("stime"));
,日志内容为
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
答案 0 :(得分:2)
如果您想从数据库获取日期和时间,则必须使用
KKLog.info(rs.getTimestamp("stime"))
这将提供表格提供的日期和时间,日期和时间存储为date
数据类型或timestamp
。
另请注意,您必须使用java.sql.Date
代替java.util.Date
。
更新1
如果使用cachedrowset,则有一些bugs与从数据库中获取时间相关联。
我尝试使用CachedRowSet并且缺少时间部分。要解决此问题,请在数据库连接部件中添加以下内容。我也可以看到时间部分。
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");
是解决此问题的关键。
我之前的日期和时间
2012-11-08 00:00:00
添加V8Compatible
2012-11-08 13:28:35
希望这有帮助