问题现象
image.png
数据库记录中ctime 和mtime差别10个小时现象,业务逻辑中二者差值应该是毫秒级别。
同时mtime是根据当前时间戳做更改。
分析
相关依赖如下
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
jdbcURl 配置如下:
jdbc:mysql://%s:%s/%s?zeroDateTimeBehavior=convertToNull&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
未设置时区,默认为serverTimezone=UTC(伦敦时区)
解决方案
1.添加时区参数,调整为北京或者上海时区
serverTimezone=Shanghai 或者 serverTimezone=GMT%2B8 (北京时间)
- 最好的方式采用数据库服务器时间
直接在sql语句使用Now()函数,这样脱离时区限制.