您的位置:首页 > 运维架构 > Linux

centos7 + mysql5.7 修改select now(); 时间显示错误的问题

2017-06-15 11:17 501 查看
昨天开发人员提出,在使用mysql数据库时,查看到的数据库时间有问题,与本地时间不一致;
一:查看问题
1.在数据库:查看时间;
mysql> select now();
+---------------------+
| now()       |
+---------------------+
| 2017-06-15 15:10:15|
+---------------------+
1 row in set (0.00 sec)
2.在linux服务器: 查看时间:
[root@localhost ~]# date
Wed Jun 15 15:10:11 EDT 2017
备注:
EDT:指美国东部夏令时间,波士顿、纽约市、华盛顿哥伦比亚特区,都在这个时区内,跟北京时间有12小时的时差,晚12小时

CST:可以指下面两种:
1.美国中部标准时间(西六区,-6:00),中国是东八区(+8:00),北京时间比美国中部标准时间早14个小时。3:45 PM CST 是北京时间凌晨1:45。
2.澳大利亚标准时间(+10:30),中国是东八区(+8:00),北京时间比澳大利亚标准时间晚2个半小时。3:45 PM CST 是北京时间下午上午5:45。
二:现在要改成北京时间的时区CST,并且在数据库中的时间也要与服务器的时间显示一致,修改如下:

1.
将edt时区改为ect时区:
修改前:
[root@localhost ~]# date
Wed Jun 15 15:11:06 EDT 2017
修改:
[root@localhost ~]# mv /etc/localtime /etc/localtime.bak
[root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改后:
[root@localhost ~]# date
Thu Jun 15 15:16:09 CST 2017
3.
linux时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间。
两者经常不一致;
解决:
# clock --systohc #同步系统时间到硬件时间
# clcok -w        #强制把系统时间写入CMOS
查看效果:
服务器:

[root@localhost ~]# date
Thu Jun 15 15:23:26 CST 2017
mysql数据库:

mysql> select date_format(now(),"%Y-%m-%d %H:%i:%s");
+----------------------------------------+
| date_format(now(),"%Y-%m-%d %H:%i:%s") |
+----------------------------------------+
| 2017-06-15 15:23:29                    |
+----------------------------------------+
1 row in set (0.00 sec)
mysql数据库与linux服务器时间一致,且为CST时区。任务完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 时间 数据库