1

結果セットを使用してOracleからデータを取得し、cachedrowset. しかし、データベースで日付フィールドを取得して印刷すると、日付のみが印刷されます。私はAPIをチェックし、getDate()メソッドが戻りjava.sql.date、の時間がsql.date0にキャストされていることを知っています。私が呼び出すと、日付と時刻のデータ全体を取得できることをテストします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;

ログを印刷するために3つの方法を使用しました

    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 
4

1 に答える 1

2

データベースから日付と時刻を取得する場合は、を使用する必要があります

KKLog.info(rs.getTimestamp("stime"))

dateこれにより、日付と時刻がデータ型またはとして保存されている場合に、テーブルから日付と時刻の両方が取得されますtimestampjava.sql.Dateまた、の代わりにを使用する必要があることに注意してくださいjava.util.Date

アップデート1

cachedrowsetが使用されている場合、データベースから時間部分を取得することに関連するいくつかのバグがあります。

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

お役に立てれば

于 2012-11-11T08:12:16.077 に答える