mysql问题 - timezone
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql问题 - timezone相关的知识,希望对你有一定的参考价值。
后台运营同事问我,有些同事实际打卡时间与数据库打卡时间记录的不一样
mysql> select *,from_unixtime(create_time) from 表名 where source_id=xxx\G *************************** 1. row *************************** id: xxx uid: xxx source_id: xxx create_time: 1495324892 type: 0 source_status: 0 nick_name: 环境监控组-xxx start_time: 1495324883 remark: 忽略视频 pre_check_status: 0 source: 3 from_unixtime(create_time): 2017-05-21 00:01:32 1 row in set (0.00 sec)
因为运营库是2主2从,我对比了主从的数据,发现确实不一样,一个是早上8点,另外一个是凌晨,使用了from_unixtime函数,结果相差8个小时,比较像是时区的问题
mysql> select from_unixtime(1495324892); +---------------------------+ | from_unixtime(1495324892) | +---------------------------+ | 2017-05-21 08:01:32 | +---------------------------+ 1 row in set (0.00 sec) mysql> select from_unixtime(1495324892); +---------------------------+ | from_unixtime(1495324892) | +---------------------------+ | 2017-05-21 00:01:32 | +---------------------------+ 1 row in set (0.00 sec)
怀疑是linux机器的时区问题,但查询发现都是一样的
Thu May 25 15:11:29 CST 2017
既然与linux时区无关,那应该跟MySQL的时间有关了,再次分别查询主从的时间
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2017-05-25 15:12:28 | +---------------------+ 1 row in set (0.00 sec) mysql> select now(); +---------------------+ | now() | +---------------------+ | 2017-05-25 07:09:31 | +---------------------+ 1 row in set (0.00 sec)
果然是MySQL的时间问题
mysql> show variables like "%time_zone%"; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | HKT | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) mysql> show variables like "%time_zone%"; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec)
发现一个MySQL处于UTC时间,世界标准时间,而另外一个是香港时间,中国是东八区,比世界标准时间多8个小时,这就解释了为什么8点打卡,却显示在凌晨上班。于是把有问题的MySQL,重新修改时区
set global time_zone = ‘+8:00‘; set time_zone = ‘+8:00‘; flush privileges;
本文出自 “DBA运维空间” 博客,请务必保留此出处http://dadaman.blog.51cto.com/11373912/1929429
以上是关于mysql问题 - timezone的主要内容,如果未能解决你的问题,请参考以下文章