【故障】mysql 中的timeStamp经过mybatis获取后就自动加了8小时

语文太差了。。 这个问题我描述的不一定准确。。
类似的情况还有 多13或者14小时的,但都是一个问题导致的。

情况是这样的…

我们的某个定时任务进度依赖的一个config表中的时间戳,莫名其妙的出现了超过当前时间的未来的时间。。 按理说这是不可能的,因为所有的值都是取自实际表中的数据且必然小于now()…

经过日志打印
这里写图片描述

上面的LINUX TIME是mybatis里面获得的某个result的日期对象toString的结果… 下面的TIME是正常的时间。

于是为了这个问题,先后搜过如何修改mysql时区

https://www.jb51.net/article/84198.htm

并未解决问题。

SimpleDateFormat 强制设置时区 是能解决,但是不太好

SimpleDateFormat sdf=new SimpleDateFormat("hh:mm:ss", Locale.getDefault());
sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));

最后的最后,发现了我们工程中datasource的配置中有这么一条。。

这里写图片描述

奶奶的。。

由于mysql中默认设置的CST时间… 你用UTC的话,CST = UTC+8就会出现这个问题

【故障】mysql 中的timeStamp经过mybatis获取后就自动加了8小时_第1张图片


【故障】mysql 中的timeStamp经过mybatis获取后就自动加了8小时_第2张图片

参考:

https://blog.csdn.net/yjgithub/article/details/80404002

你可能感兴趣的:(故障处理)