云服务器中数据库时区错误

本文最后更新于:2023年8月24日 晚上

问题描述

存入数据库的时间与当前时间不一致

原因

在mysql数据库中默认的时区为CST,这种时区非常混乱,有四种含义:

  1. 美国中部时间 Central Standard Time (USA) UTC-06:00
  2. 澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
  3. 中国标准时 China Standard Time UTC+08:00
  4. 古巴标准时 Cuba Standard Time UTC-04:00

为什么提到日期?因为美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,与 UTC+08:00 相差 13 小时。

在java中获取MySQL中的时区,Java 会误以为是 CST -0500,而非 CST +0800

解决

执行:

1
2
3
set global time_zone = '+08:00'
set time_zone = '+08:00'
flush privileges

一些查询

查询mysql数据库时间

1
2
3
select now() --yyyy-MM-dd HH:mm:ss
select sysdate() --yyyy-MM-dd HH:mm:ss
select current_date --yyyy-MM-dd

查看数据库时区

1
show variables like '%time_zone%'

云服务器中数据库时区错误
https://xin-fas.github.io/2022/04/18/云服务器中数据库时区错误/
作者
Xin-FAS
发布于
2022年4月18日
更新于
2023年8月24日
许可协议