【问题描述】
在使用 YashanDB JDBC 驱动查询 DATE 类型字段时,如果直接使用:
resultSet.getString(1);
返回结果只包含日期(如 2024-05-01),不包含时分秒。
【示例现象】
数据库中原始字段值为:
2024-05-01 15:30:00
但 getString() 返回结果却是:
2024-05-01
这会导致部分依赖时间精度的业务逻辑异常。
【影响范围】
适用于 所有 YashanDB JDBC 驱动版本
【问题原因】
YashanDB JDBC 驱动在 DATE 类型字段解析时,getString() 默认只取日期部分,不自动附带时分秒。
这是驱动实现细节所致,并非数据库数据缺失,而是驱动层对 DATE 类型做了默认“轻量格式化”。
【解决方法】
方式一:改用getTimestamp()方法(推荐)
String ts = resultSet.getTimestamp(1).toString();
这样可以完整获取日期 + 时间,例如:
2024-05-01 15:30:00.0
方式二:在连接串中设置参数
在 JDBC URL 中添加:
mapDateToTimestamp=true
完整示例:
String url = "jdbc:yashandb://127.0.0.1:8080/dbname?mapDateToTimestamp=true";
启用后,即使使用 getString() 也会返回完整的日期+时间字符串。
【推荐做法总结】
【风险提示】
若业务代码依赖 getString() 且未添加参数,可能导致日期字段截断,建议统一加参数或替换调用方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。