mysql时间保存差13个小时

11 篇文章 0 订阅
7 篇文章 0 订阅
问题:mysql时间保存到数据库中与当前时间相差13个小时,查询出来又显示正常
环境:
  • spring-boot
  • mysql驱动:com.mysql.cj.jdbc.Driver
  • mysql版本:5.7
分析
  1. 集成mysql-plus,怀疑是自动填充出问题,设置new Date()没问题,sql语句没问题
  2. 数据库时区: show variables like "%time_zone%";
  3. 查询出来显示正常
解决

com.mysql.jdbc.Drivercom.mysql.cj.jdbc.Driver的区别就是:com.mysql.cj.jdbc.Driver驱动需要指定时区:serverTimezone

# 在数据库连接池中指定时区
url: jdbc:mysql://172.17.60.159:3306/youbetter?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
思考
  • 时区检查:CTS,但是CTS有四种定义
美国中部时间 Central Standard Time (USA) UTC-06:00
澳大利亚中部时间 Central Standard Time (Australia)
UTC+09:30 中国标准时 China Standard Time
UTC+08:00 古巴标准时 Cuba Standard Time UTC-04:00
另外:美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,与 UTC+08:00 相差 13 小时
  • JDBC时区协调
    mysql驱动向数据插入数据时,需要将应用的时间修改为数据库所在时区的时间,查询时再将数据库存储的时间转换为web服务器所在时区的时间
    代码:com.mysql.cj.jdbc.ConnectionImpl和com.mysql.cj.protocol.a.NativeProtocol
    参考:> https://www.cnblogs.com/zhi-leaf/p/10608134.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值