【问题标题】:Timestamp from server is different than local来自服务器的时间戳与本地不同
【发布时间】:2020-07-01 11:36:38
【问题描述】:

在我们的 mysql 数据库的表中有一个 datetime 类型的 createdAt 列和一个 timestamp 类型的 updatedAt 列。在数据库中,日期是正确的。我查询我的数据库并在 React 中显示值,当从我的本地 xampp 服务器运行时,它们会正确显示。

我们的 beta 和实时站点托管在外部 debian-jessie 服务器上,在这两个服务器上,React 中显示的 updatedAt 处于完全不同的时区,相差 7 小时。如果我在我们的服务器上运行“日期”,它会显示正确的时区,并且我知道服务器托管在我们的时区中。

如果这很重要,我们使用 typeORM/GraphQL/type-graphql 来查询数据,并使用 Apollo 将其传递给 React。

有没有人知道为什么会发生这种情况或解决方案?

【问题讨论】:

    标签: mysql debian


    【解决方案1】:

    您的本地时区可能与您服务器的 MySQL 时区不同。理想情况下,MySQL 时区应该与您自己的时区相同,以便更有效地处理数据。

    您的时区可能设置在 mysql 中的以下位置之一:

    在文件my.cnf 文件中的[mysqld] 部分

    default-time-zone='+00:00'
    

    global.time_zone变量

    查看它们设置的值:

    SELECT @@global.time_zone;
    

    要为其设置一个值,请使用其中一个:

    SET GLOBAL time_zone = '+8:00';
    SET GLOBAL time_zone = 'Europe/Helsinki';
    SET @@global.time_zone = '+00:00';
    

    @@session.time_zone 变量

    SELECT @@session.time_zone;
    

    要设置它,请使用其中一个:

    SET time_zone = 'Europe/Helsinki';
    SET time_zone = "+00:00";
    SET @@session.time_zone = "+00:00";
    

    【讨论】:

    • mysql使用系统的时区,所以应该已经正确了
    • 你能进入mysql并运行查询SELECT NOW();查看两个服务器的 mysql 中的响应是否相同或不同。
    • 我做了,它显示了 7 小时的时差,所以这一定是问题所在。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2014-12-12
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多