解決Java 資料庫連線中的MySQL 時區差異
在某些場景下,MySQL 資料庫時區和Java 伺服器時區可能會導致不一致使用日期時間值時。本文解決了這個問題,並提供了使用 MySQL JDBC 連接器的全面解決方案。
這個問題源自於 MySQL 使用「GMT 8」時區的預設行為,而 Tomcat 在「GMT」上運作。這種差異會導致資料庫中儲存的日期時間值不正確,並在 Java 中檢索。
要修正此問題,必須修改連線 URL 以包含下列參數:
但是,此方法已被更強大的解決方案所取代,該解決方案涉及使用 useLegacyDatetimeCode=false。此參數會停用舊的日期時間處理程式碼並啟用 MySQL JDBC 連接器中的新時間戳處理機制。
透過設定 useLegacyDatetimeCode=false,Java 程式碼可以在設定時間戳記時指定 Calendar 物件。此日曆物件應該為空,因為它的存在會導致日期時間值根據網頁伺服器時區進行格式化,從而引入混亂。
要正確檢索日期時間值,getTimestamp(int)應該在不指定 Calendar 物件的情況下使用方法。這可確保資料庫時區專門用於格式化。
要注意的是,網路伺服器時區與此方法無關。此外,如果 MySQL 抱怨伺服器時區不明確(例如 EST),可以使用 serverTimezone=
此解決方案具有顯著的效果提高了從 Java 應用程式與 MySQL 資料庫互動時日期時間處理的準確性。
以上是如何解決資料庫連線中MySQL和Java時區衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!