[MySQL]关于在更新JDK版本后插入mysql时间与本地时间相差13或14小时的问题

发布时间 2023-08-30 16:20:59作者: Angel挤一挤

 

 

现象:插入数据库中的时间与本地时间(中国标准时间UTC+08:00)相差13或14个小时。

 

解决方法

在jdbc.url中加入serverTimezone=CTT 或serverTimezone=Asia/Shanghai 或serverTimezone=GMT%2B8 

 

原因:

名为 CST 的时区是一个很混乱的时区,有四种含义:

  • 美国中部时间 Central Standard Time (USA) UTC-06:00 or UTC-05: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

 

在mysql中CST代表的是中国标准时间,即UTC+08:00;

在高版本jdk中CST不再表示中国标准时间,仅代表美国中部时间;

 

 

在线上环境MySQL数据库中时区的配置如下:

 

因此在更新了高版本的JDK之后,java读取的时区为CST会被认为是美国中部时间,进而导致实际时间与服务器本地时间相差13或14小时的。