快捷搜索:  汽车  科技

mysql怎么查看时区(记一次修改mysql时区的历程)

mysql怎么查看时区(记一次修改mysql时区的历程)h.insert_time ) `VALUE` h.`NAME` COALESCE ( FORMAT(SUM(h.`VALUE`) / COUNT(1) 0) 0

前言

最近公司项目上实现一个新需求,本地已经测通了没问题,放到服务器上就出现毛病了,时间错了。

问题是什么?

需求是让统计24个小时(以当前时间为准向前推24个小时)的数据。sql语句大概是这样:

SELECT

h.ID

h.`NAME`

COALESCE (

FORMAT(SUM(h.`VALUE`) / COUNT(1) 0) 0

) `VALUE`

h.insert_time

DATE_SUB(NOW() INTERVAL 23 HOUR)

FROM

rep_health_data h

WHERE

h.`NAME` = 'PM25'

AND h.insert_time >= DATE_FORMAT(

DATE_SUB(NOW() INTERVAL 23 HOUR) '%Y-%m-%d %k'

)

GROUP BY

DATE_FORMAT( h.insert_time '%Y-%m-%d %k' )

ORDER BY

预期的sql结果

但实际SQL结果为:

mysql怎么查看时区(记一次修改mysql时区的历程)(1)

实际的sql结果

多出来整整13个小时的数据。

为什么会这样?

一定是时区问题搞的鬼!查看mysql时区

mysql怎么查看时区(记一次修改mysql时区的历程)(2)

查看数据库时区

查看服务器时间

mysql怎么查看时区(记一次修改mysql时区的历程)(3)

查询系统时间和时区

得,mysql默认使用的SYSTEM时区,即EST时区,查询相关资料可知,EST时区要比北京时间(东八区)慢13个小时,在数据库中的表现即为:

mysql怎么查看时区(记一次修改mysql时区的历程)(4)

获取当前mysql时间

确实比当前系统的时间慢了整整13个小时。

我应该怎么做?

一:通过sql命令临时修改

mysql怎么查看时区(记一次修改mysql时区的历程)(5)

mysql中修改时区

在查一次数据库时区

mysql怎么查看时区(记一次修改mysql时区的历程)(6)

mysql查看当前时区

奥利给,东八区,没毛病!

然后执行sql

mysql怎么查看时区(记一次修改mysql时区的历程)(7)

修改时区后的sql结果

OK,已恢复正常!

二:修改my.cnf实现永久修改

vi /etc/mysql/my.cnf

mysql怎么查看时区(记一次修改mysql时区的历程)(8)

mysql的配置文件

然后在mysqld下边的配置中添加一行:

default-time_zone = ' 8:00'

然后重启mysql

service mysql restart

三:代码控制:使用TimeZone工具类

关于TimeZone的具体使用方法不在本文范围内,如需了解请自行百度

mysql怎么查看时区(记一次修改mysql时区的历程)(9)

这代码粘贴上来乱七八糟的,还是截图吧

去服务器上测试:

mysql怎么查看时区(记一次修改mysql时区的历程)(10)

代码执行结果

完成!如果觉得我的文章能够帮助到你,请多多关注、多多分享,各位的支持就是我前进的动力。

mysql怎么查看时区(记一次修改mysql时区的历程)(11)

猜您喜欢: