mysql安装后记得设置时区

原文地址:mysql中的CST时区问题_ljj125896的博客-CSDN博客_数据库时区cst

原因:

1.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操作都会使用自定义时区去进行时间处理。
 

2.原文地址:MySQL修改数据库时区 - 北斗星君 - 博客园

MySQL修改数据库时区

在服务器环境下(linux 或 docker),有时系统时区默认是 UTC 时区,这时需要格外注意下应用使用的时区信息。

在使用 ef + linq 执行 mysql 查询时,若查询条件中含有 Datetime.Now(),则会按 mysql 的时区信息查询,造成时间错乱。

可以使用 select now(); 来检查 mysql 的当前时间是否准确。

修改 mysql 的时区配置:

1、临时配置(重启后失效):

set time_zone = '+8:00';
set global time_zone = '+8:00';

注意,执行以上语句后,需重新连接 mysql 生效。

2、永久配置(重启仍有效):

修改 my.cnf 文件配置(修改后重启 mysql 生效):

# 设置默认时区
[mysqld]
default-time_zone='+8:00'

北京时间为东八区

--查看数据库时区设置
mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |
+------------------+--------+
-修改当前会话时区,退出msql后 time_zone 会恢复成修改前的值
mysql> set time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | +08:00 |
+------------------+--------+

—-修改全局会话时区
mysql> set global time_zone = '+8:00';
mysql> set time_zone = '+8:00';
mysql> flush privileges;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值