web-dev-qa-db-ja.com

JDBC ResultSetgetDateが精度を失う

ResultSet.getDate(x)呼び出しの精度が失われています。基本的に:

rs = ps.executeQuery();
rs.getDate("MODIFIED");

は、MODIFIEDがデフォルトの精度のOracleTIMESTAMPフィールドである日に切り捨てられた日付を返します。私が見逃しているJDBCの微調整があるかもしれないと思います。通常、TIMESTAMPはDATEと互換性がありますが、テーブル全体を再定義する必要がないことを望んでいます。

27
orbfish

ResultSet.getDate() は、_Java.sql.Date_ではなく_Java.util.Date_を返します。それは時代を超越した日付であると定義されています。タイムスタンプが必要な場合は、 ResultSet.getTimestamp() !を使用してください。

63
Affe

Java.sql.Dateの代わりにJava.sql.Timestampを使用する必要があります。必要に応じて、後でJava.util.Dateオブジェクトとして使用できます。

rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");

お役に立てれば。

4
dpatchery

タイムスタンプの使用は正しい方法です。タイムスタンプでは、Liquibaseを使用する場合、列をnull許容に設定できないことに注意してください。

私も遭遇した問題。

0
Ali