spencer7593..
46
不,不可能在MySQL实例中更改单个数据库的时区.
您可以检索服务器和客户端time_zone设置:
SELECT @@global.time_zone, @@session.time_zone;
您还可以更改整个MySQL实例的客户端时区或时区.
但要敏锐地了解现有客户端连接的含义,以及如何解释已存储在实例中的DATETIME和TIMESTAMP值.
要在MySQL实例启动时设置服务器time_zone DATETIME,请在[mysqld]部分下修改文件(或从中读取mysql实例初始化参数的位置):
[mysqld]
default-time-zone='+00:00'
- 要么 -
将TIMESTAMP选项添加到mysqld_safe
注意:更改MySQL服务器上的时区设置不会更改存储在现有DATETIME或TIMESTAMP列中的值,但是因为它确实有效地更改了解释这些存储值的上下文,所以看起来所有值都会被移位.(其中08:00是指CST上午8点,服务器的time_zone从CST变为GMT,同样'08:00'现在将被视为格林尼治标准时间上午8点,实际上是2AM CST.
每个客户端会话都可以更改自己会话的时区设置:
SET time_zone='-06:00';
但这些都没有真正"解决"时区转换问题,它只会改变转换问题.
应用层处理时区转换没有任何固有的"坏"; 有时,这是最好的处理方式.它必须正确和一致地完成.
(您描述的设置有什么奇怪的是,应用程序存储DATETIME值,好像MySQL服务器time_zone设置为GMT,但MySQL服务器time_zone设置为其他东西.)
SET timezone =' - 06:00'; 应该是SET time_zone =' - 06:00'; (4认同)