解决 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中文网其他相关文章!