zoukankan      html  css  js  c++  java
  • mysql查出来的时间跟数据库相差13/14小时

    背景

    mysql查出来的时间跟数据库相差13/14小时,写入的时间跟数据库也相差13/14小时。

    问题原因

    • 查看时区:
      在mysql中执行以下命令:
    SHOW VARIABLES LIKE '%time_zone%';
    

    查询结果如下:

    可以看到时区使用的是 CST,而 CST 是一种混乱的时区。它可以有多种表现:

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

    Java和Mysql协商时区时把Mysql的CST时间当成了美国中部时间即UTC-5(美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,其他时候是UTC-06:00)。我们国家是UTC+08:00 时区,所以差了13/14个小时

    解决方法:

    • 第一种:

    在项目的jdbc配置中,加入时区 &useTimezone=true&serverTimezone=GMT%2B8
    示例如下:

    jdbc:mysql://主机名:3306/库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useTimezone=true&serverTimezone=GMT%2B8
    
    • 第二种:
    ##修改mysql全局时区为北京时间,即我们所在的东8区
    set global time_zone = '+8:00'; 
    flush privileges;
    

    如果使用 set time_zone = '+8:00'; 只会修改当前会话的时区,停止会话就失效。

    参考资料:

    https://juejin.cn/post/6844903476225376264

  • 相关阅读:
    [bzoj1934][Shoi2007]Vote 善意的投票
    [bzoj1834][ZJOI2010]network 网络扩容
    [bzoj2127]happiness
    [bzoj3876][Ahoi2014]支线剧情
    [bzoj1927][Sdoi2010]星际竞速
    [bzoj3223]Tyvj 1729 文艺平衡树
    [bzoj3224]Tyvj 1728 普通平衡树
    FJOI2017 RP++
    [bzoj3529][Sdoi2014]数表
    异步ajax请求数据处理
  • 原文地址:https://www.cnblogs.com/expiator/p/15558853.html
Copyright © 2011-2022 走看看