首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
查询mysql中timestamp类型字段时获取的值比实际值要大,是因为时区的问题吗?大佬快来帮忙分析下。。。
想翻身的咸鱼
2017-11-24 09:59
问题会不会是时区设置问题,但是不知道怎么解决,麻烦各路大佬指点指点,小白一枚,在此谢过
项目:
JFinal
1
1
评论区
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
@想翻身的咸鱼
感谢回来分享,这个问题确实不容易被注意到
回复
发送
我要反馈
热门反馈
扫码入社