【问题标题】:MySQL DB server using system timezone while saving timestamp columnMySQL DB服务器在保存时间戳列时使用系统时区
【发布时间】:2018-10-27 06:24:53
【问题描述】:

我们正在使用 - 爪哇 8, 网络服务器 - Tomcat 8.5, 数据库服务器 - MySQL 5.7, 休眠-5, Tomcat 基于 jdbc 池的数据源。

我们将 MySQL 连接器 J 从 5.1.46 版本升级到 8.0.16。我们的 Web 服务器时区是 UTC,mysql 服务器现在在 IST 时区,在升级驱动程序时间戳列值之前,它只在 UTC 中持久化(使用 hibenate),但是在移动到 J8 驱动程序之后,它被保存到 MySQL 服务器时区,即 IST。

我们希望时间戳值仅以 UTC 格式存储/获取。

【问题讨论】:

    标签: java mysql tomcat


    【解决方案1】:

    默认情况下,连接时区是 MySQL 数据库服务器的时区。当您连接到 MySQL 数据库服务器时,您可以使用不同的时区。为此,您必须将会话的时区设置为不同的时区,如下所示:

      SET time_zone ='+03:00';
    

    我认为,这应该可行。

    此外,在创建表时,您可以编写如下查询:

      CREATE TABLE categories (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
     );
    

    我希望这会奏效。有关 MySql 时间戳的更多详细信息,请查看这篇不错的文章:

    http://www.mysqltutorial.org/mysql-timestamp.aspx

    【讨论】:

    • 感谢戈帕尔。您提到 db server timezone 是默认设置,您是在谈论连接器 j 8.0.16 驱动程序吗?如果是,那么在创建数据源时我需要传递服务器 timezones=UTC 对吗?
    猜你喜欢
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多