接口测试 【求助】JDBC 获取数据时精度问题(时间末尾精度为 000 时,获取结果精度只有一位)

差班生 · 2023年11月03日 · 最后由 差班生 回复于 2023年11月03日 · 4872 次阅读

使用 JDBC 版本为 5.1.46,mysql 的版本 5.6.16,从客户端查询出数据为

使用 JDBC 拿到数据是

为什么当末尾是 000 时,查询出来的结果精度只有一位???

本地 debug 时,查看返回的时间戳也是正常的

共收到 3 条回复 时间 点赞

mysql-connector-java 版本升级出现的一次问题。涉及到了时间精度的截取和四舍五入。

首先了解一点,timestamp,datetime 如果不指定精度,默认的精度是秒。

当 mysql-connector-java 版本<=5.1.22 时,db 的客户端会将 Datetime,Timestamp 秒以下的精度丢弃。版本>5.1.22 后,秒以下的值将不会截断

是不是类似这样的?

恒温 回复

不是,如果时间精度值不是 000,返回是正常的。比如:数据库中 2023-10-18 17:06:19.247,返回也是 2023-10-18 17:06:19.247。,如果数据库中是 2023-10-18 17:06:19.000,返回结果就是 2023-10-18 17:06:19.0,精度丢失两位。

差班生 回复

看了源码,大概找到问题了, 在取精度的时候。使用的函数时 getInt,

当精度是 000 时,取出是 0😂 😂 😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册