Java应用和Mysql时间相差8个时区的问题

20 篇文章 0 订阅
9 篇文章 0 订阅

  最近在做项目时发现,在无论在java应用中使用 java.util.Date还是使用 java.time.LocalDateTime类,获取的当前时间保存到数据库中后,数据库中的时间跟应用中获取的时间相差 8个小时。

    一、排查过程 

            首先查看数据库和java应用的时区设置,发现时区都没为题,都为东八区。

           困惑了好久 再一次配置 数据库连接池时发现,配置的JDBC连接路径中多了 “serverTimezone=UTC”,参数,去除此参数后

重启再次保存时间 java应用和数据库中的时间一致了。

  

   二、设置数据库的时区

     1、首先查看数据库配置的时区

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+

     如果 system_time_zone 为 CST 表示此时数据库中设置的时区非东八区。

    2、修改方式

      2.1、命令行之行

mysql> set global time_zone = '+08:00';
Query OK, 0 rows affected (0.00 sec)
mysql> set time_zone = '+08:00';
Query OK, 0 rows affected (0.00 sec)

      2.2、修改配置文件

           在配置文件 my.conf 或 my.ini中添加  default-time-zone = '+08:00'。重启数据库

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值