在MySQL 領域,流行的時區設定「GMT 8」經常與Tomcat 等發生衝突,以「GMT ”運行。正如使用者所觀察到的,這種差異可能會在管理日期時間值時導致令人困惑的時區怪異。
為了有效解決此問題,深入研究 MySQL JDBC 連接器的內部運作至關重要。在版本 5.1.38 之前,使用稱為「useTimezone」的舊參數作為解決方法。然而,現在存在一個更強大的解決方案,利用「useLegacyDatetimeCode」參數。
透過明確設定「useLegacyDatetimeCode = false」並利用最新版本的 mysql JDBC 連接器,您可以授權 MySQL 的內部機制來處理具有更高精度的日期時間值。以下連接 URL 舉例說明了這種方法:
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false";
使用「setTimestamp」方法設定時間戳記時,必須省略 Calendar 參數。這可確保日期物件根據資料庫的時區設定進行格式化,而不管網路伺服器上的主要時區為何。例如:
setTimestamp(1, Timestamp);
這種方法消除了由於使用「setTimestamp(1, Timestamp, Calendar)」而經常引起的混亂,該方法錯誤地應用了網路伺服器的時區。
檢索時間戳記時,避免使用 Calendar 參數也同樣重要。資料庫的時區將再次控制格式化過程。
值得注意的是,網路伺服器的時區現在不再影響這些操作。只要“useLegacyDatetimecode”設定為“false”,資料庫的時區就會決定日期時間值的處理,從而確保全面的一致性。
在某些情況下,MySQL 可能會將資料庫時區標記為不明確。要解決此問題,使用“serverTimezone”參數明確指定時區可以提供清晰的說明。
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York";
透過實作這些技術,您可以在 MySQL 的「GMT 8」時區和 Java 的「GMT」時區之間建立和諧共存。 ,確保資料庫連線中日期時間值的處理準確且一致。
以上是如何解決Java資料庫連線MySQL時區不一致的問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!