Java开发中一起MySQL时间戳精度引发的血案
点关注,不迷路;持续更新Java相关技术
最近工作中遇到两例mysql时间戳相关的问题,一个是mysql-connector-java和msyql的精度不一致导致数据查不到;另一例是应用服务器时区错误导致数据查询不到。通过这篇文章,希望能够解答关于mysql中时间戳的几个问题:
mysql中的DATETIME精度为什么只支持到秒?mysql中的DATETIME类型跟时区有关吗?mysql设计表的时候,表示时间的字段改如何选择?案例分析 DATETIME的精度问题
前段时间,将负责的应用的mysql-connector-java的版本从5.1.16升级到5.1.30,在做功能回归的时候发现,使用了类似上面的SQL的用例的运行时数据会有遗漏,导致功能有问题。
考虑到我负责的应用中,有个功能需要用到类似下面这种SQL,即使用时间戳作为查询的条件,查询在某个时间戳之后的所有数据。
经过排查发现:mysql-connector-java在5.1.23之前会将秒后面的精度丢弃再传给MySQL服务端,正好我们使用的mysql版本中DATETIME的精度是秒;在我将mysql-connector-java升级到5.1.30后,从java应用通过mysql-connector-java将时间戳传到MySQL服务端的时候,就不会将毫秒数丢弃了,从mysql-connector-java的角度看是修复了一个BUG,但是对于我的应用来说却是触发了一个BUG。
推荐阅读
- 宿舍|哈利波特:宿舍龙蛋全攻略,带上你的小伙伴,一起拿走奖励吧
- 魔兽世界|《轨迹》新作明年发布! 法老控将针对NS平台开发游戏
- 手机游戏|CFHD:神秘组织为什么开发生化手雷呢?关键是为了赚更多钱
- edg战队|原神2.4卡池终于曝光,3位新老婆角色一起up,云堇是5星风属性主c角色!
- ag战队|AG不敌XYG,梦泪气到下播,阿泽:首发阵容是大家一起确定的
- faker|SKT的情谊!Faker提到学弟满脸笑意,Bang和Wolf想和学弟一起开黑
- 大话西游|大话西游2这些召唤兽的天生技能是开发组拿来凑数的吗?实际效果完全没用
- 电子竞技|【欣然轻资讯G】《地平线2西部禁域》新老怪兽即将登场 开发者日志
- 许秀|输了还“抱得美人归”?showmaker收女星邀请:回来一起吃个饭吧
- 桌游|48小时里,游戏开发能给这群大学生带来什么?