我在mysql数据库的一个表中有一个类型为datetime的createdAt列和一个类型为timestamp的updatedAt列。 数据库中的日期是正确的。 我查询数据库并在React中显示值,当从本地xampp服务器运行时,它们会正确显示。
我们的beta和live站点都托管在一个外部的debian-jessie服务器上,在这两个服务器上,React中显示的更新的at是在一个完全不同的时区,有7个小时的差异。 如果我在服务器上运行“date”,它会显示正确的时区,而且我知道服务器是在我们的时区中托管的。
如果真的很重要,我们使用typeorm/graphql/type-graphql来查询数据,并使用Apollo来让它做出反应。
有人知道为什么会发生这种情况,或者有什么解决办法吗?
您的本地时区可能与服务器的MySQL时区不同。 理想情况下,MySQL时区应该与您自己的时区相同,以便更高效地处理数据。
您的时区可能设置在MySQL中的以下位置之一:
在[mysqld]
节中的my.cnf
文件中
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";