datetime(6)字段查询精度丢失

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】all-in-one 4.3.5_bp2_20250515
【问题描述】在数据库表中定义datetime(6)类型的字段,通过ODC查看能够展示秒后6位精度,通过java程序的2.4.14oceanbase-client驱动获取该字段,string类型接收,后面位数据精度会丢失或忽略0截断,想请问是转字符时默认丢弃精度了吗?换成mysql8.0.19版本的驱动后无此问题。
请问升级oceanbase驱动版本能解决此问题吗?具体升级到哪个版本?
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

用户问题总结:在 OceanBase 数据库中定义了 datetime(6) 类型字段,通过 ODC 查看可以展示秒后 6 位精度,但使用 Java 程序和 oceanbase-client 驱动(版本 2.4.14)获取该字段时,精度会丢失或忽略尾部的零进行截断。更换为 MySQL 8.0.19 版本驱动后无此问题。

在这种情况下,obdiag 工具可能无法直接解决精度丢失的问题,因为这更可能是驱动程序的行为或配置问题,而不是数据库本身的运行状态问题。不过,我们可以通过日志采集来确认驱动与数据库交互的具体情况。

日志采集场景和命令

日志采集场景: SQL 执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h<您的IP> -P<端口> -u<用户名>@<租户名> -p<密码> -D<数据库名>’, trace_id=’<trace_id>’}”

解释: 上述命令可以帮助我们收集 SQL 执行过程中相关的日志信息,以便进一步分析是否存在驱动与数据库交互中的异常行为。请将 <您的IP><端口><用户名><租户名><密码><数据库名><trace_id> 替换为实际值。

为了更好地帮助您,请提供以下信息:

  1. 您当前使用的 OceanBase 数据库版本是什么?
  2. 您是否尝试过升级到更高版本的 OceanBase 客户端驱动?如果尝试过,请说明具体版本。
  3. 在 Java 程序中,您是如何配置日期时间格式的?是否有自定义的格式化器或解析器?
  4. 您能否提供一个简单的代码示例,展示如何从 Java 程序中读取 datetime(6) 字段?
  5. 是否有可能提供包含 datetime(6) 字段的表结构以及插入数据的 SQL 示例?

最后,如果您能运行上述日志采集命令并将生成的日志压缩包提供给我们,将有助于进一步诊断问题。

附上敏捷诊断工具 obdiag 使用帮助链接

可以试着用
getTimestamp()接口代替 getString()