文章转载自:https://www.jianshu.com/p/70f4d748a7fb

问题

使用mybatis读取mysql数据库里的timestamp字段时,发现读取所得时间比数据库原始数据多了几小时。

解决办法1

原因是数据库使用了非中国时区,所以去数据库里设置一下时区即可,因为mybatis会读取数据库市区来转换时间戳:

set global time_zone = '+8:00';
set time_zone = '+8:00';
flush privileges;

MyBatis查询MySQL的datetime类型数据时间误差

解决办法2

改写jdbc连接字符串:

  1. 开启时区转换,将useTimezone设置为true
  2. 设置时区,指定time_zone
jdbc:mysql://localhost:3306/table_name?useTimezone=true&serverTimezone=GMT%2B8

GMT%2B8表示东八区

mysql服务器和客户端时区不同,使用jdbc得到的结果差8小时的问题

etc

一般数据库时间读取有误的问题,都是时区问题