美文网首页
解决LocalDateTime.now()入数据库时间少8个小时

解决LocalDateTime.now()入数据库时间少8个小时

作者: dayue_ | 来源:发表于2021-08-14 15:04 被阅读0次

    方式一:检查项目datasource的url配置项serverTimezone是否写了UTC,如果是的话要把serverTimezone=UTC换成serverTimezone=GMT%2B8

    方式二:如果方式一换了也发现没用,然后项目持久层用的是JPA的话,检查是否加了该配置项 jpa.properties.hibernate.jdbc.time_zone: UTC,如果是的话,把该配置项删除。

    方式三:datasource、持久层配置项检查无误,从数据库层面检查,如果是mysql的话,检查mysql的时区,可以用select now();查看当前数据库时间,如果少了8个小时,那就是数据库配置的问题了,mysql变量time_zone是数据库时间,time_zone默认是取变量system_time_zone系统时区,默认是为UTC,故我们要修改变量time_zone的值,修改mysql变量time_zone的值为+8:00,最后重启下项目,因为当前项目数据库连接池保留的session变量time_zone仍然为上一次的全局变量time_zone的值。

    //查看当前数据库时间
    select now();
    
    //查看mysql变量%time_zone%
    show variables like '%time_zone%';
    
    // 查看全局变量time_zone和当前连接session变量time_zone
    SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
    
    //设置全局变量time_zone和当前session变量time_zone
    set global time_zone = '+8:00';
    set time_zone='+8:00';
    

    相关文章

      网友评论

          本文标题:解决LocalDateTime.now()入数据库时间少8个小时

          本文链接:https://www.haomeiwen.com/subject/erpdbltx.html