问题
使用mybatis读取mysql数据库里的timestamp字段时,发现读取所得时间比数据库原始数据多了几小时。
解决办法1
原因是数据库使用了非中国时区,所以去数据库里设置一下时区即可,因为mybatis会读取数据库市区来转换时间戳:
set global time_zone = '+8:00'; set time_zone = '+8:00'; flush privileges;
MyBatis查询MySQL的datetime类型数据时间误差
解决办法2
改写jdbc连接字符串:
- 开启时区转换,将
useTimezone
设置为true
- 设置时区,指定
time_zone
jdbc:mysql://localhost:3306/table_name?useTimezone=true&serverTimezone=GMT%2B8
GMT%2B8表示东八区
mysql服务器和客户端时区不同,使用jdbc得到的结果差8小时的问题
etc
一般数据库时间读取有误的问题,都是时区问题
发表回复