ホームページ >Java >&#&チュートリアル >Java の「java.sql.Timestamp」ストレージはタイムゾーンに依存しますか?
java.sql.Timestamp のストレージはタイムゾーンに影響されますか?
JDBC における、java.sql での setTimestamp() メソッドの動作。タイムスタンプはドライバーによって異なる場合があります実装.
ドライバーの動作:
ほとんどのドライバーは、javadoc で説明されている setTimestamp(int paramparIndex, Timestamp x, Calendar cal) の規則に従います。 Calendar オブジェクトが指定されていない場合、ドライバーは通常、アプリケーションを実行している仮想マシンのタイム ゾーンを使用します。
データベース内のタイムスタンプ ストレージ:
setTimestamp( を使用する場合) intparameterIndex,Timestampx) カレンダーを指定しないと、ドライバーはタイムスタンプをデータベースに保存する前に VM のタイムゾーンに変換します。データベース列にタイム ゾーン情報が欠如している場合、この変換によりタイム ゾーン データが失われる可能性があります。
例:
GMT 2 のローカル タイム ゾーンを考慮してください。 UTC タイムスタンプは「2012-12-25 10:00:00 UTC」です。データベースに保存すると、タイムスタンプは「2012-12-25 12:00:00」(GMT 2) として表示されます。アプリケーションによって GMT 0 で取得された場合、タイムスタンプは「2012-12-25 12:00:00 UTC」として解釈されます。
特定のタイム ゾーンでのタイムスタンプの保存:
特定のタイムゾーンのタイムスタンプを保存するには、setTimestamp(int parameterIndex、Timestamp x、Calendar cal) と目的の Calendar インスタンス (例: GMT の Calendar.getInstance(TimeZone.getTimeZone("GMT")))。
Timestamp Retrieval:
同様に、タイムスタンプを取得するときは、必ず同じ時間を使用してください。
JDBC 4.2 での java.time.LocalDateTime の使用:
JDBC 4.2 準拠のドライバーでは、java.time.LocalDateTime (およびjava.time.LocalTime) を介して TIMESTAMP 型と TIME 型を使用します。 get/set/updateObject メソッド。これらのクラスは、タイムゾーンのない時間を表します。
以上がJava の「java.sql.Timestamp」ストレージはタイムゾーンに依存しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。