MySQL 插入时间错误问题
3年前
在程序中进行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代表上海时间,上海时间=北京时间=东八区时间