问题现象:在数据库中的日期显示正常,但是通过JSP进行调用后发现时间偏差了13个小时。经查询,此问题是由于MySQL的默认时区设置造成的。
具体排查和操作方法如下:
一、查看MySQL当前时区和时间
> show variables like "%time_zone%"; #查看时区
#time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
> select curtime(); #查看时间
> select now(); #查看日期+时间
二、修改时区
方法1:通过修改环境变量参数来修改时区
> set global time_zone = "+8:00"; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = "+8:00"; ##修改当前会话时区
> flush privileges; #立即生效
实际操作过程中,这条修改并没有成功,显示0 row(s) affected
方法2:通过修改my.cnf配置文件来修改时区
# vim /etc/my.cnf
在[mysqld]区域中加上:default-time_zone = "+8:00"
修改完成后,需要重启启动MySQL,配置生效。