mysql中的CST时区问题
作者:互联网
在项目操作过程发现了一个时区的问题,问题现象为sql打印的时间和数据库里面存储的时间不一样。后来发现问题原因为mysql的时区为CST。网上搜索了下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
由于CST存在歧义,所以导致java通过jdbc去获取时区的时候,就会出现问题,通常会把CST解析为GTM+3时区。
这个时候,通常有两个解决办法:
1.修改mysql的设置,把mysql的时区设置为UTC或+8:00
修改mysql的时区也有两种方式
1)通过客户端连接mysql,通过命令设置时区
可以先查看当前时区:show variables like '%time_zone%';
确认时区为CST后再进行修改:set time_zone='+8:00';
2)修改my.cnf文件,再mysqld设置项下添加default-zone-time='+8:00'
2.修改jdbc连接设置,直接把连接的时区固定死,绕开mysql本身的时区。
就是在jdbc连接配置上添加以下两个配置即可:
useTimezone=true&serverTimezone=GMT%2B8
分别为启用时区设置和设置连接服务的时区。
此时,jdbc操作都会使用自定义时区去进行时间处理。
————————————————
版权声明:本文为CSDN博主「郭罗氏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljj125896/article/details/89156157
标签:UTC,00,Standard,mysql,CST,时区 来源: https://www.cnblogs.com/mylpy/p/15339312.html