「java.sql.Date」を利用して DATE 型のカラムに登録する際、Oracle JDBC ドライバのバージョンによって時刻が適切に扱われない場合があります

 
【現象】

「java.sql.Date」を利用して DATE 型のカラムに登録する際、Oracle JDBC ドライバのバージョンによって時刻が適切に扱われない場合があります


【原因】

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" に設定する


【問題となるケース】

以下のすべてに該当する場合に、バージョンアップ後に影響を受ける可能性があります。

* Oracle Database 11g 以前のバージョンを利用していて、バージョンアップ等に伴って Oracle Database を 12c 以降にアップグレードする
* システムプロパティに「-Doracle.jdbc.mapDateToTimestamp=false」を設定している
* カスタマイズや機能追加等で独自に開発されたプログラムで DATE 型のカラムを利用している

【対応方法】

DATE 型のカラムに時刻が設定されても問題ないように、カスタマイズや機能追加等で独自に開発されたプログラムを修正してください。

または

システムプロパティに「-Doracle.jdbc.DateZeroTime=true」を設定してください。
Oracle JDBC Driver 12.1.0.1 および 12.1.0.2 では、Patch 19297927 を適用することでこのプロパティが使用可能になります。

詳細は Oracle 社のサポートサイトをご確認ください。


 -- 対象 -------------------------------------------------------------------------
iAP/Accel Platform/全アップデート
 --------------------------------------------------------------------------------


FAQID:1123
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk