您的位置 首页 java

记一次java插入datetime类型日期与实际时间相差8h

概述

最近某个 java 项目反馈某张表的datetime类型字段与服务器实际日期不符合,相差8h,下面简单介绍下解决思路及方法。


思路:

mysql默认使用的CST时区,它能够表示四种时区,分别为:

1.美国中部时间 Central Standard Time (USA) UTC-06:00

2.澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30

3.中国标准时 China Standard Time UTC+08:00

4.古巴标准时 Cuba Standard Time UTC-04:00

由于CST存在歧义,所以导致java通过jdbc去获取时区的时候,就会出现问题,通常会把CST解析为GTM+3时区。

这里只需要调整mysql时区即可。


1、查看 mysql数据库 时区

 show variables like '%time_zone';
show variables like 'log_time%';  
记一次java插入datetime类型日期与实际时间相差8h


2、修改mysql的设置,把mysql的时区设置为 UTC 或+8:00

1)通过客户端连接mysql,通过命令设置时区

 -- 先查看当前时区:
show variables like '%time_zone%';  
-- 确认时区为CST后再进行修改解决时区问题
set time_zone='+8:00';  
-- 解决mysql日志时间与系统时间相差8h
set global log_timestamps=SYSTEM;  

2)修改my.cnf文件,再mysqld设置项下添加

注意一定要在 [mysqld] 之下加 ,否则会出现 unknown variable ‘default-time-zone=+8:00’

 #解决时区问题
default-time-zone = '+8:00'
#解决mysql日志时间与系统时间不一致问题
log_timestamps=SYSTEM  


后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

文章来源:智云一二三科技

文章标题:记一次java插入datetime类型日期与实际时间相差8h

文章地址:https://www.zhihuclub.com/180269.shtml

关于作者: 智云科技

热门文章

网站地图