首頁 >Java >java教程 >`java.sql.Timestamp` 是否儲存時區資訊?

`java.sql.Timestamp` 是否儲存時區資訊?

Barbara Streisand
Barbara Streisand原創
2024-12-24 19:09:13877瀏覽

Does `java.sql.Timestamp` Store Time Zone Information?

java.sql.Timestamp 時區是否特定?

背景:

JDBC 的 setTimestamp( int parameterIndex, Timestamp x) 方法為資料庫列分配時間戳,無需明確指定時區。這就提出了一個問題:Timestamp 是否攜帶時區資訊?

答案:

不,java.sql.Timestamp 本身不攜帶時區資訊。

說明:

通話時setTimestamp(...),JDBC 驅動程式依賴執行應用程式的虛擬機器的時區來決定要儲存的日期和時間。這意味著儲存的值不會保留時區資訊。

範例:

考慮以下場景:

  • 應用程式時區:印度標準時間(IST)
  • 資料庫時區: IST
  • 時間戳值:"20121225 10:00:00 UTC”

在這種情況下,驅動程式會將UTC 時間轉換為IST(基於虛擬機器的時區)並將其儲存為「20121225 12:00:00 」

在特定時區儲存時間戳:

要在特定時區儲存時間戳,請使用 setTimestamp(int parameterIndex, Timestamp x, Calendar cal) 方法。指定具有所需時區的日曆對象,以確保相應地儲存時間戳記。

其他注意事項:

  • 擷取:何時使用getTimestamp(...) 擷取時間戳,驅動程式將使用虛擬機器的時區來解釋該值,除非是Calendar 物件已指定。
  • java.time.LocalDateTime: 與 JDBC 4.2 的驅動程式支援 TIMESTAMP 資料的 java.time.LocalDateTime。這允許直接映射時間戳而無需時區轉換。

以上是`java.sql.Timestamp` 是否儲存時區資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn