最近在开发项目的时候,发现一个问题。在我测试环境存入的时间,都是当前时间。但是我到服务器上的时候时间怎么都不对。有相差13个小时,相差1个小时等等。这种问题我们应该如何排查。
第一步:确定数据库的日期是否是正常的。
1:查看数据库当前时间是否正确
select DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') from dual;
2:确定数据库版本
select VERSION() from dual;
3:查看当前数据库的时区
show variables like "%time_zone%";
如果不正确,需要调整数据库的时区时间。
第二步:查看服务器的时间是否正常的。
1:执行date查看时间是否是当前时间
2:执行timedatectl查看时区与时间相关
如果时间和当前时间不一致,需要修改相同。我之前就是遇到这个问题,导致调整时间格式,一直都不对。所以这块大家要注意下。
第三步,查看连接数据的时候需要设定时区。
spring.datasource.url=jdbc:mysql://服务器地址:3306/表名?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8 spring.datasource.username=用户名 spring.datasource.password=密码
需要设置serverTimezone的时区。