■質問日: |
2016/09/26 |
■最終更新日: |
2017/07/11 |
■質問内容: |
WDCの同一プログラム・WDC・DBを使用した上で Oracle JDBCドライバのバージョンを差換えたところ 結果に相違が発生する事象がありました。 【ClientRowSetへのクエリSQL内容】 ─────────────── SELECT TO_DATE(DECODE(TRUNC(LOG(10,A.SEINENGATPI))+1,8,A.SEINENGATPI,NULL),'YYYY/MM/DD')AS SEINENGATPI_YMD FROM SAMPLE A ─────────────── ※ SEINENGATPI は NUMBER型8桁 以上のクエリ実行結果においてマッピング結果に相違が発生しました。 【結果】 ─────────────── 【jdbc:Oracle 10gドライバ「classes12.jar」】 jp.co.tenartni.data.Type.DATE型 【jdbc:Oracle 11gドライバ「ojdbc6.jar」】 jp.co.tenartni.data.Type.TIMESTAMP型 ─────────────── 【検証環境】 ─────────────── jdbc:Oracle 10gドライバ ojdbc14.jar DB:Oracle 11g WDC:wdc_130_210 Java:jdk1.6 ─────────────── ─────────────── jdbc:Oracle 11gドライバ ojdbc6.jar DB:Oracle 11g WDC:wdc_130_210 Java:jdk1.6 ─────────────── |
■回答内容: |
Oracle JDBC ドライバの11.1以降でDate型のマッピングが変わりました。 9.0.1 から 11.0 では「oracle.sql.DATE」が 「java.sql.Date」にマッピングされていまいた。 11.1からはデフォルトで「oracle.sql.DATE」が 「java.sql.Timestamp」にマッピングされるようになります。 【参考】Oracleサイト http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/java.111/E05720-02/apxref.htm 「Oracleオブジェクト型からSQL DATEデータ型へのマッピング」の項を ご参照ください。 こちらに書いてあるように、 Javaのシステムプロパティ「oracle.jdbc.mapDateToTimestamp」を false に設定してお試しください。 |
■添付資料: |
なし |