My Oracle Support Banner

Oracle JDBC Driver 11.2.0.4 から移行した後、JDBC 12c では java.sql.Date に Timestamp が追加される (Doc ID 1948974.1)

Last updated on JULY 25, 2019

適用範囲:

JDBC - バージョン 12.1.0.1.0 から 12.1.0.2.0 [リリース 12.1]
この文書の内容はすべてのプラットフォームに適用されます。

現象

Oracle JDBC Driver 12.1.0.1 から setDate() の動作が変更されています。この結果、setDate() を使用すると DATE 型のカラムに時間が格納されるようになりました。

  Oracle JDBC Driver 12.1.0.1 から:setDate() の変数に定義されている時間が格納される
  Oracle JDBC Driver 11.2.0.4 まで:ドライバが時間を "00:00:00" に設定する

サンプルコード:

PreparedStatement ps = conn.prepareStatement("insert into <TABLE>(<COL_NUM>, <COL_DATE>) values(1111, ?)");
Date cd = new Date(System.currentTimeMillis());
ps.setDate(1, cd);
ps.execute();

結果:
"select to_char(<COL_DATE>, 'DD-MON-YYYY HH24:MI:SS') from <TABLE>" を実行すると、使用するOracle JDBC Driver によって次のような結果が返されます。

  Oracle JDBC Driver 11.2.0.4 まで : 12-NOV-2014 00:00:00
  Oracle JDBC Driver 12.1.0.1 から : 12-NOV-2014 16:14:48

原因

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
現象
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.