首页 >数据库 >mysql教程 >当 `useTimezone=true` 失败时如何解决 MySQL 和 Java 时区不匹配问题?

当 `useTimezone=true` 失败时如何解决 MySQL 和 Java 时区不匹配问题?

Patricia Arquette
Patricia Arquette原创
2024-12-01 20:33:12615浏览

How to Resolve MySQL and Java Timezone Mismatches When `useTimezone=true` Fails?

使用Java调整数据库连接MySQL时区

问题描述:

MySQL正在运行在“GMT 8”时区,而 Tomcat 使用“GMT”。当使用 Java 与数据库交互时,这种差异会导致日期时间存储和检索不一致。尽管在连接 URL 中设置了“useTimezone=true”和“serverTimezone=GMT”,问题仍然存在。

解决方案:

要解决时区不匹配问题,请执行以下操作建议方法:

  1. 禁用旧日期时间代码:

    更新连接 URL 以包含“useLegacyDatetimeCode=false”。这将激活 MySQL 中管理时间戳的更新且更准确的方法。

    String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false";
  2. 对时间戳使用空日历:

    设置时使用 setTimestamp 方法设置时间戳,请确保没有提供 Calendar 对象作为第三个参数。此步骤将允许根据数据库的时区格式化日期对象。

    getTimestamp(int, Timestamp)
  3. 指定服务器时区(可选):

    如果 MySQL 在确定服务器时区时遇到歧义,则可能需要在连接中显式指定它URL。

    String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York";

通过实施这些措施,可以消除 MySQL 和 Java 之间的时区不匹配,确保数据库中正确的日期时间存储和检索。

以上是当 `useTimezone=true` 失败时如何解决 MySQL 和 Java 时区不匹配问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn