在 MySQL 中设置时区
有很多关于 MySQL 和时区管理的文章,但在本文中,我们将尝试填补缺失的信息。我们将介绍如何有效地处理时区。
在 MySQL 中显示服务器中的当前时间
有时,在使用 MySQL 服务器时,你需要处理不同的时区,这有时会让你感到困惑。例如,你需要根据客户的时间设置 MySQL Server 时间或将数据迁移到不同的服务器和时区。
当你切换到夏令时 (DST) 时区时,也可能发生这种情况。为了确保时区与计划的一致,你必须检查或更改 MySQL 服务器时区。
首先,我们需要检查 MySQL 服务器中的当前时间,以检查它是否是所需的时区。
SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2022-02-19 21:58:15 |
+---------------------+
1 row in set (0.00 sec)
我们还可以查询当前的全局和会话时区值。
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
默认响应是 system
,这意味着服务器和系统时区是相同的。
+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM | SYSTEM |
+--------------------+--------------------+
1 row in set (0.00 sec)
有几种方法可以更改时区;让我们一一看看。
更改配置文件以更改 MySQL 中的时区
最简单的方法是编辑配置文件并设置默认时区。你可以通过以下代码从 Linux 服务器的终端打开 my.cnf
配置文件。
$ sudo vi /etc/mysql/my.cnf
打开文件后,我们需要向下滚动一点找到 [mysqld]
部分,在这里我们将看到 default-time-zone = "+00:00"
。此处 "+00:00"
显示与 GMT 区域的偏移量。
我们可以通过设置"+01:00"
将其更改为匈牙利的时区。在某些情况下,你可能没有 [mysqld]
部分;在这种情况下,你需要将其添加到文件的末尾。
编辑文件后,我们需要关闭它并使用以下命令重新启动服务器。
$ sudo service mysql restart
更改 Global time_zone
变量以更改 MySQL 中的时区
我们还可以更改服务器的全球时区并设置新的 GMT 偏移值。
SET GLOBAL time_zone = '-4:00';
在此命令中,你需要设置你所在时区的 GMT 偏移量。我们将其设置为 GMT -4:00
小时。
你还可以使用其他定义,例如更改变量或编写特定时区名称。
SET GLOBAL time_zone = 'Europe/Budapest';
SET @@global.time_zone = '+02:00';
如果我们使用特定时区的名称而不是数值,我们可能会遇到一个小问题。如果我们收到未知或不正确的时区
错误,则时区数据不会加载到 MySQL 服务器中。
你可以按照填充时区表解决此问题。
仅为 MySQL 中的会话更改时区
如你所见,我们最初查询了两个变量;其中之一是 system_time_zone
。
通过更改此变量,你不会更改全局时区,而只会更改每个会话的时区;重新启动服务器并再次运行后,你将回到原来的时区。
SET time_zone = "+00:00";
Subhan is a professional back-end developer as well as mobile developer. He is also open-source contributor by writing articles.
LinkedIn