問題は、Java Date
オブジェクトはタイムゾーンを保存しません。値は 常に UTC で、特定のタイム ゾーン (通常は JVM のデフォルト タイム ゾーン) で解析およびフォーマットされます。
オラクル DATE
列もタイムゾーンなしで保存されますが、ユーザーに表示される日付を表す必要があります。 99.99% のケースで、これは JVM のデフォルト タイム ゾーンの日付を意味します。
したがって、JDBC ドライバーは Timestamp
を取得します。 / Date
値 (UTC) はデフォルトのタイム ゾーンに変換され、データベースに保存されます。
PreparedStatement.setTimestamp(int parameterIndex, Timestamp x)
方法。タイムゾーンを制御するには、PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
方法。 javadoc の引用: