我们将时区设置为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。
不确定要更改哪个变量/配置。
我们尝试更改my.ini中的default-time-zone
,但它更改了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之间究竟有什么区别。
此外,The Mysql documentation says -
--timezone或TZ的允许值取决于系统。
无法在Windows和Cent OS服务器上找到适当的IST值。 From this article它似乎需要一些调查。有人可以帮忙吗?任何指针。
背景
我想要的是在服务器上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'
答案 0 :(得分:2)
您的MySQL software's system time zone default设置为服务器计算机的默认时区。这就是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通常很有帮助。然后,我们允许用户在注册使用Web应用程序时选择时区首选项。也许,如果您的网络应用程序是全印度的,那么您不需要增加复杂性。