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能够解决插入记录时时差问题。

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/120481710