数据库时区问题导致时间显示异常
起因
【数据库时区问题导致时间显示异常】今天用Sqlyong客户端在Tidb数据库(兼容Mysql协议)里面查询一些数据,本来想通过时间字段看看数据产生的时间,结果发现即便是刚创建的数据时间字段也和我当前的时间对不上,差了13个小时。
调查
太奇怪了,于是google了一下资料,原来如果没有自定义设置,数据库默认使用的时区是系统时区,而系统时区为CST,这个CST又有好多种解释,分别为如下。
- 美国中部时间 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
解决办法
- 设置Tidb服务器的时区为我们想要的时区,比如UTC+00,或者UTC+08;
- 重新配置后端系统连接数据库服务器的URL,添加参数serverTimezone=UTC;
在和数据库打交道的时候一定要注意时区问题,尤其是针对涉及国际化的业务来说,各个服务器的时区可能有很大差异,如果不显示的指定统一的时区,很容易导致混乱。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- Docker应用:容器间通信与Mariadb数据库主从复制
- jhipster|jhipster 升级无效问题
- “精神病患者”的角度问题
- 解决SpringBoot引用别的模块无法注入的问题
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 【教育故事】|【教育故事】 一个“问题学生”的蜕变
- 蓝桥杯试题