数据库在表设计中如下表所示:
`updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
说明updated_time非空,同时在进行更新操作时自动生成CURRENT_TIMESTAMP类型的时间进行存储。
由于数据库系统时间配置没有进行专门设置:
show variables like'%time_zone';
Variable_name Value
time_zone SYSTEM
因此时间值会比本地时间少8小时。导致代码中获取的时间在传回前端时整体时间少8小时。
处理方式:
由于无法更新旧数据,同时为了减少代码的修改,直接允许存值时间-8小时的情况,仅对yml中进行配置修改:
spring:
jackson:
serialization:
write-dates-as-timestamps: true
time-zone: GMT+8
datasource:
- 略
url: jdbc:mysql://**/**? useSSL=false&rewriteBatchedStatements=true
修改之后,数据库存值仍然少8小时,但是代码获取时间加上了8小时。