mysql 插入或查询相差8个小时 mysql 时区问题

本地项目发布到oracle云上后,发现时间不对,差8个小时。

首先查看服务器的时区

[opc@instance-20200525-2350 ~]$ date -R
Thu, 13 Aug 2020 03:39:22 +0000

显示的不是东8区,那么我们需要时间为东八区,例如

[root@kunfind ~]# date -R
Thu, 13 Aug 2020 11:16:05 +0800

第一步,调整服务器的时区    centos7

#timedatectl       首先查看时区

[opc@instance-20200525-2350 ~]$ timedatectl
      Local time: Thu 2020-08-13 03:43:18 GMT
  Universal time: Thu 2020-08-13 03:43:18 UTC
        RTC time: Thu 2020-08-13 03:43:18
       Time zone: GMT (GMT, +0000)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

#timedatectl set-local-rtc 1   将硬件时钟设置为本地时区

#timedatectl set-timezone Asia/Shanghai  设置为上海时区

这时候执行#data -R 显示时区正常

[opc@instance-20200526-1036-qy ~]$ date -R
Thu, 13 Aug 2020 11:47:21 +0800

第二步 调整数据库的时区 : 也改为东八区时区

当我们发现服务器时区调整好以后,数据库执行 select NOW() 时间是正确的,可是数据库执行查询时间不对

这时候修改mysql 时区

修改 /etc/my.inf 在 【mysqld】下面加入

default-time-zone = '+8:00'

重启mysql服务 service mysqld restart

第三步 应用程序连接JDBC URL需要调整

MySQL 8.0 以上的版本连接时都需要在url后面加 serverTimezone 参数,serverTimezone=Asia/Shanghai

因为我们统一用上海时区,那么这个地方修改成

jdbc:mysql://xx.xx.xx.xx/MES002?serverTimezone=Asia/Shanghai&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false

 

最好保证服务器时区,数据库时区,以及JDBC配置指定时区 保持一致,不然就会出现相差8个小时、13个小时的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值