[MySQL]关于在更新JDK版本后插入mysql时间与本地时间相差13或14小时的问题
现象:插入数据库中的时间与本地时间(中国标准时间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小时的。