查询mysql中timestamp类型字段时获取的值比实际值要大,是因为时区的问题吗?大佬快来帮忙分析下。。。

image.pngimage.png
问题会不会是时区设置问题,但是不知道怎么解决,麻烦各路大佬指点指点,小白一枚,在此谢过

评论区

JFinal

2017-11-24 11:47

Integer 改为 Long 即可,timestamp 使用 int 存放,动不动就会溢出

想翻身的咸鱼

2017-11-24 14:32

@JFinal 波哥,我这里createtime是String类型的,而且打断点跟进Db.paginate的实现去看,从PreparedStatement去执行executeQuery()方法的时候ResultSet中
createTime的值就已经不对了。。。

想翻身的咸鱼

2017-11-24 16:39

找到原因了,这里总结一下。因为mysql数据库未指定所在时区默认为美国中部时间
(UTC-06:00),美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,与 UTC+08:00 相差 13 小时,冬令时则相差14个小时。所以jdbc取出来的时候时间就已经有“误差了”。各位小伙伴使用timestamp类型的时候一定要注意指定时区,不管是在数据库配置指定还是数据库连接的参数设置,一定要指定时区。

JFinal

2017-11-24 16:43

@想翻身的咸鱼 感谢回来分享,这个问题确实不容易被注意到

热门反馈

扫码入社