首页 > 代码库 > centos7 + mysql5.7 修改select now(); 时间显示错误的问题

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

昨天开发人员提出,在使用mysql数据库时,查看到的数据库时间有问题,与本地时间不一致;


一:查看问题

    1.在数据库:查看时间;

        mysql> 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时区。任务完成!


本文出自 “敬管叔鲜” 博客,谢绝转载!

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