tx

wangcx

栖迟於一丘,则天下不易其乐
30,966
MySQL 插入时间错误问题 MySQL 插入时间错误问题

在程序中进行update操作时候,发现插入时间错误,程序执行的sql与本机(北京时间)相差8个小时,而在Navicat直接执行,则不能复现问题,通过搜索得知问题在于jdbc的连接参数上,大多数博客给出的默认jdbc连接参数都类似:

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

问题出在serverTimezone=UTC这个配置上,UTC简称世界统一时间,比北京早8个小时,如果定义了serverTimezone=UTC,那么在你编译器上执行的SQL语句,会先以UTC时区进行存储,发送到MySQL,然后MySQL以本地时区进行转换,这样就会导致同一段SQL语句,在Navicat直接执行与IDEA执行,结果不同

  • 改为serverTimezone=GMT%2B8,GMT%2B8代表是东八区时间,也就是北京时间
  • 或者serverTimezone=Asia/Shanghai,Asia/Shanghai代表上海时间,上海时间=北京时间=东八区时间
0 条评论
user 编辑评论信息
插入图片

隐私评论