我需要更改单个数据库的时区吗?
我知道我们可以更改WHM中的时区(我们使用来自hostgator的专用服务器),但是服务器上运行的大量遗留软件中有大量的6小时编码(即服务器时区是CST,我们想要GMT中的时间让以前的开发人员在代码中手动更改日期/时间 – 糟糕!).
我现在正在开发一个新软件,并希望在GMT中拥有所有这些,我知道我可以使用date_default_timezone_set(‘GMT’)但是这不能解决日期时间列设置为CURRENT_TIMESTAMP的MySQL插入,因为它将插入@CST时区.
解决方法:
不,不可能在MySQL实例中更改单个数据库的时区.
您可以检索服务器和客户端time_zone设置:
SELECT @@global.time_zone, @@session.time_zone;
您还可以更改整个MySQL实例的客户端时区或时区.
但要敏锐地了解现有客户端连接的含义,以及如何解释已存储在实例中的DATETIME和TIMESTAMP值.
要在MySQL实例启动时设置服务器time_zone,请在[mysqld]部分下修改/etc/my.cnf文件(或从中读取mysql实例初始化参数的任何位置):
[mysqld]
default-time-zone='+00:00'
– 要么 –
将–default_time_zone =’00:00’选项添加到mysqld_safe
注意:更改MySQL服务器上的时区设置不会更改存储在现有DATETIME或TIMESTAMP列中的值,但是因为它确实有效地更改了解释这些存储值的上下文,所以看起来所有值都会被移位. (其中08:00是指CST上午8点,服务器的time_zone从CST变为GMT,同样’08:00’现在将被视为格林尼治标准时间上午8点,实际上是2AM CST.
另请注意,TIMESTAMP列始终以UTC格式存储,而DATETIME列则没有时区.
http://dev.mysql.com/doc/refman/5.5/en/datetime.html
每个客户端会话都可以更改自己会话的时区设置:
SET time_zone='-06:00';
但这些都没有真正“解决”时区转换问题,它只会改变转换问题.
应用层处理时区转换没有任何固有的“坏”;有时,这是最好的处理方式.它必须正确和一致地完成.
(您描述的设置有什么奇怪的是,应用程序存储DATETIME值,好像MySQL服务器time_zone设置为GMT,但MySQL服务器time_zone设置为其他东西.)
标签:mysql,timezone,database 来源: https://codeday.me/bug/20190926/1818575.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。