1

ojdbc14 から ojdbc6 に切り替えたところ、準備済みステートメントと を介して javax.sql.Time 値を Oracle 列に挿入するとpreparedStatement.setTime(1, new javax.sql.Time(new Date().getTime()))、その動作が変化したことに気付きました。以前は、日付と時刻の両方の情報をテーブルに挿入していましたが、新しいドライバーを使用すると、時刻の部分のみがキャプチャされ、データベースに表示される値の日付が 1970 年 1 月 1 日になっているように見えます。

さて、これが事実であることは明らかです。私の質問は、この動作を説明する公式ドキュメントまたは変更ノートをどこで見つけることができるかということです。

ありがとう

4

1 に答える 1

2

java.sql.Timestamp私の意見では、値を などの日付/時刻オブジェクトとして渡し、それらをそのまま読み取ることで、より役立つと思います。したがってpublic void setTimestamp(int parameterIndex, Timestamp x)、それぞれの値を設定するために使用します。これは、よりクリーンに使用できます。

データベースからデータを読み取った後、Java SimpleDateFormat を使用して、好みに合わせてデータをフォーマットできます。

ただし、この Oracle JDBC Driver Documentationで見つけることができる、タイムスタンプの使用に関する文書化されたバグがいくつかあります。これらは直接関係ないかもしれませんが、次のものを見てください: #BUG-6749320、#6870832、#7028625、#6441084

この変更については、「DATE と TIMESTAMP で何が起こっているのか?」を参照してください。Oracle JDBC FAQセクションに記載されています。

于 2012-08-07T22:31:18.893 に答える