serverTimezone时区设置

标准配置

无论是使用5.#数据库还是8.#版本数据库,只要jdbc驱动使用的是8.#那么我们就需要考虑数据库时区问题,否则就会报时区错误,标准配置代码如下:

# mysql
jdbc.username = root
jdbc.url = jdbc:mysql://localhost:3306/hospital?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
jdbc.password = 123456
jdbc.driver = com.mysql.cj.jdbc.Driver
其他配置参考
#北京东八区
serverTimezone=GMT%2B8
#上海时区
serverTimezone=Asia/Shanghai
问题根源

MySQL8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。如果我们不手动指定serverTimezone属性,那么默认采用UTC时间

UTC是什么时区
不属于任意时区 ,协调世界时间, 又称世界统一时间,世界标准时间,国际协调时间,简称UTC,UTC时间会比北京时间少8小时, 所以数据库连接会直接出现时区错误。

地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便。
为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1—12区,西1—12区。每个时区横跨经度15度,时间正好是1小时。最后的东、西第12区各跨经度7.5度,以东、西经180度为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。

例如,中国东8区的时间总比泰国东7区的时间早1小时,而比日本东9区的时间晚1小时。因此,出国旅行的人,必须随时调整自己的手表,才能和当地时间相一致。凡向西走,每过一个时区,就要把表拨慢1小时(比如2点拨到1点);凡向东走,每过一个时区,就要把表拨快1小时(比如1点拨到2点)。并且规定英国(格林尼治天文台旧址)为本初子午线,即零度经线。
在这里插入图片描述
正因为这个原因, 我们本地安装使用MySQL的时候默认走本地的时间,而连接默认使用UTC, 所以产生了时差, 导致数据库连接不成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未系上弦月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值