使用java.sql.Timestamp 在資料庫中儲存和檢索時間戳時,考慮以下因素至關重要:時區對資料的影響。
預設情況下,如果使用setTimestamp(int, Timestamp) 設定Timestamp 物件而不指定Calendar 對象,則JDBC 驅動程式將使用執行應用程式的虛擬機器的時區。這意味著資料庫中儲存的時間戳記可能無法反映預期的時區。
為了確保 UTC 時間戳正確儲存在資料庫中,必須提供 Calendar 物件setTimestamp(int, Timestamp, Calendar) 與所需的時區。對於 UTC,可以透過以下方式實現:
透過忽略時區考慮,提供的程式碼錯誤地將 UTC 時間戳儲存為本地時間戳。這可能會導致從資料庫檢索資料時出現差異,因為它將根據目前應用程式的時區進行解釋。
The Timestamp.toString() 方法與 java.util.Date 類似,根據虛擬機器本地時區列印時間戳記。它不反映儲存值的時區。
JDBC 4.2 引入了對 TIMESTAMP 和 TIME 資料類型的 java.time.LocalDateTime 和 java.time.LocalTime 的支援。這些類別與時區無關,無需明確時區轉換。
以上是在 JDBC 中使用 java.sql.Timestamp 時如何正確處理時區?的詳細內容。更多資訊請關注PHP中文網其他相關文章!