Java操作mysql插入记录带时间戳时差问题
Posted luffy5459
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java操作mysql插入记录带时间戳时差问题相关的知识,希望对你有一定的参考价值。
如题所示,我们在做mybatis相关项目的时候,会用到mysql,如今更多的是直接使用springboot+mybatis组合。这样,在配置数据源的时候,会有这样的配置:
server:
port: 8080
spring:
application:
name: mec_huali
datasource:
url: jdbc:mysql://192.168.226.100:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
我们可以看到,数据源连接url参数后面跟着一个参数名serverTimezone=GMT-8。因为"-"要转义,所以是GMT%2B8。如果这个参数不带,或者参数名写错了:serverTimeZone。那么就会出现插入当前时间,变成了世界时间,并不是东八区时间或北京时间。
我们可以看看mybatis打印语句,以及数据库中保存的记录:
插入第一条记录,这时候不带serverTimezone参数。
数据库中的记录:
很明显,相差了8小时。
再插入一条记录,这时候正确带上serverTimezone参数。
数据库中的两条记录也对比明显:
前后两条记录,仅仅间隔三分钟,时差却差了8个小时多。 在中国,我们最常用的时间显示是北京时间,虽然世界时间也是没有问题的,但是我们更希望它显示东八区时间。
从这里也可以看出,数据源连接信息中的url参数serverTimezone能够解决插入记录时时差问题。
以上是关于Java操作mysql插入记录带时间戳时差问题的主要内容,如果未能解决你的问题,请参考以下文章