问题现象

在通过 YashanDB JDBC 驱动查询 date 类型字段时,若使用如下方式:

rs.getString(1);
返回的结果只包含日期(例如 2024-05-01),不包含时分秒部分。
image.png

问题影响

数据看似缺失时分秒,容易误导业务逻辑;

某些依赖完整时间戳的功能出现误判或异常。

根因分析

YashanDB JDBC 驱动在处理 date 类型字段时,getString() 默认只格式化为 yyyy-MM-dd,未自动附加时间部分。

解决方案

推荐使用 getTimestamp() 获取完整时间信息:

String datetime = rs.getTimestamp(1).toString();  // 返回:2024-05-01 14:30:00.0

或在 JDBC 连接串中加入:

mapDateToTimestamp=true
例如:

jdbc:yashandb://localhost:8080/dbname?mapDateToTimestamp=true

建议总结

如业务依赖完整时间,务必使用 getTimestamp();

若框架不可更改,可通过连接参数启用自动映射;

此行为适用于所有版本 YashanDB 驱动。


数据库砖家
1 声望0 粉丝