0

我们将时区设置为 IST(印度标准时间)以 -

mysql> show global variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | IST    |
| time_zone        | SYSTEM |
+------------------+--------+


SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> select NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2017-10-31 17:05:26 |
+---------------------+

上面显示了与服务器时间相同的时间,它也在 IST 中。

我们想将其更改为 UTC。与时区为 UTC 的服务器相比,该服务器上唯一不同的值似乎system_time_zone是设置为 IST 的变量,如上所示。

不确定要更改哪个变量/配置。

我们尝试更改default-time-zonemy.ini 中的 ,但它更改了time_zone变量而不是system_time_zone.

据我了解,以下还将尝试更新time_zone- SET GLOBAL time_zone="+00:00";

所以,不知道会更新什么system_time_zone

已检查https://stackoverflow.com/a/5359622/351903 不确定 system_time_zone 和 time_zone 之间究竟有什么区别。

此外,Mysql 文档说-

--timezone 或 TZ 的允许值取决于系统。

无法在 Windows 和 Cent OS 服务器上找到合适的 IST 值。从这篇文章看来,它需要一些调查。有人可以帮忙吗?任何指针。

背景

我想要的是select NOW();在服务器上看到 5:30 小时的时差。目前它显示的时间与应用程序服务器时间(也是 IST)相同。我们正在尝试添加这种差异来重现测试场景。

更新

在我的 Windows 设置中获得以下信息 -

mysql> SET time_zone = 'Asia/Kolkata';
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkata'
mysql> SET time_zone = "Asia/Kolkata";
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkata'
mysql> SET time_zone = "UTC";
ERROR 1298 (HY000): Unknown or incorrect time zone: 'UTC'
4

1 回答 1

3

您的MySQL 软件的系统时区默认设置为您的服务器机器的默认时区。这就是SYSTEM在那个环境中的意思。您的服务器机器又设置为印度时间。

请注意,NOW() 和TIMESTAMP数据在显示或检索时始终转换为本地时间。本地时间是通过time_zone变量的设置来定义的,要么是为你的 MySQL 连接设置的,要么是全局的。

试试这个序列,看看你是否在 UTC 中得到 NOW(),然后在印度时间。此序列设置您的连接time_zone变量。这样做会覆盖系统设置。

 SET time_zone = 'UTC';
 SELECT NOW();
 SET time_zone = 'Asia/Kolkata';  /* zoneinfo name for India time */
 SELECT NOW();

如果您得到您所期望的,您可以将服务器计算机上的默认时区设置从印度时间更改为 UTC。这通常是一种很好的做法。你如何做到这一点取决于你的服务器机器的操作系统。这说明了如何为 Ubuntu 做这件事。

https://askubuntu.com/questions/323131/setting-timezone-from-terminal

或者,您可以编辑 MySQL 配置文件以包含如下行:

 default-time-zone='UTC'

并重新启动您的 MySQL 服务器软件。

在美国,我们有很多时区,将默认设置为 UTC 通常很有帮助。然后,我们允许用户在注册使用网络应用程序时选择时区偏好。也许,如果您的网络应用程序是全印度的,您就不需要这种额外的复杂性。

于 2017-10-31T13:56:44.090 回答