mybatis mysql连接时区_mysql8时区设置,springboot,mybatis连接jdbc时区设置,jackson时区设置...

首先看一下mysql的配置default-time-zone 字段:

mysqld 配置:default-time-zone = ‘system’ 【这是mysql8的默认设置】

mysqld 配置:default-time-zone = ‘+8:00’ 【国内时间】

mysqld 配置:default-time-zone = ‘+0:00’ 【格林威治时间、格林威治平时】

改完配置要重启,通常用+8时间

这个配置作用在mysql内部的时间处理上,比如now()函数的使用

在使用sql语句时,比如lnsert插入新数据

我们自己的电脑在国内是+8时区,如果mysqld配置system或者+8,那么新插入数据是now()函数的时间和自己电脑相同

如果mysqld配置的是+0:00使用格林威治时间,那么如果电脑显示是19:00 晚上7点,那么insert到数据库时,数据库中显示11:00,上午11点。

我们在mysql中使用datetime存储时间

mysql存这个时间时不包含时区,存的是几点,取出来就是几点。

在mysql中存储:

id username password datetime

1 xixi pw 2020-04-25 16:29:38

2 q qq 2020-04-25 17:33:55

3 w ww 2020-04-25 11:50:13

下面以id为3的数据为例

现在数据库配置改为+0:00

数据库所有时间查询时,显示不变。

现在有一条数据时间是:2020-04-25 11:50:13 【这个是数据库显示时间】

时间戳是:1587815413

select create_time,unix_timestamp(create_time) from user where id =3;

+---------------------+-----------------------------+

| create_time | unix_timestamp(create_time) |

+---------------------+-----------------------------+

| 2020-04-25 11:50:13 | 1587815413 |

+---------------------+-----------------------------+

因为数据库设置为GMT+0,所以这个时间对应北京的时间就是:2020-04-25 19:50:13

这就是default-time-zone参数的作用

下面的例子中mysqld时区设置为+8,创建一个springboot+mybatis 的demo

=======================================================================================

jdbc连接中参数:serverTimezone=GMT%2B8 【+8】

运行程序在console中打印从mysql中取出来的数据:

Sat Apr 25 17:50:13 CST 2020

{“create_time”:1587808213000,”id”:3,”password”:”ww”,”username”:”w”}

我们从MySQL中取出来2020-04-25 11:50:13,并且认为这个时间就是GMT+8的,而我们自己的电脑也是GMT+8时区的,所以系统不需要任何处理,输出与msyql储存一致

=======================================================================================

jdbc连接中参数:serverTimezone=GMT%2B0 【+0】

Sun Apr 26 01:50:13 CST 2020

{“create_time”:1587837013000,”id”:3,”password”:”ww”,”username”:”w”}

这个时间戳表示的北京时间是 :2020-04-26 01:50:13

原本从数据库取出了2020-04-25 11:50:13,因为配置的是GMT+0,所以这个时间被认为是格林威治时间

由格林威治时间转为北京时间,就要在原基础上加8小时,所以系统输出加了八小时得到上面输出的结果

=======================================================================================

当我们使用springboot时,用了@RestController

例:

@GetMapping(“selectOne”)

public User selectOne(Integer id) {

return this.userService.queryById(id);

}

这样返回给前端的User对象,会由springboot使用jackson做json数据转换

输出:{“id”:3,”username”:”w”,”password”:”ww”,”create_time”:”2020-04-25T03:50:13.000+0000″}

时间的最后那段是:+0000

这个时间其实是正确的时间,只是使用了GMT+0的格林威治平时来表示了,也就是说格式不对

需要加个配置spring.jackson.time-zone=GMT+8

这样输出的时间就对了

=======================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值