JDBC ResultSet getDate 失去精度
Posted
技术标签:
【中文标题】JDBC ResultSet getDate 失去精度【英文标题】:JDBC ResultSet getDate losing precision 【发布时间】:2011-03-17 01:01:51 【问题描述】:我在 ResultSet.getDate(x) 调用中失去了精度。基本上:
rs = ps.executeQuery();
rs.getDate("MODIFIED");
返回截断到 MODIFIED 是默认精度的 Oracle TIMESTAMP 字段的日期。我认为我可能缺少一些 JDBC 调整;通常 TIMESTAMP 与 DATE 兼容,但我希望不必重新定义整个表。
【问题讨论】:
【参考方案1】:ResultSet.getDate()
返回 @987654322@
,而不是 @987654323@
。它被定义为一个永恒的日期。
如果您想要时间戳,请使用ResultSet.getTimestamp()
!
【讨论】:
自我注意 - rtfm。我认为这在其他地方也有效。 “java.sql.Date 被定义为一个永恒的日期”。那句话救了我的命。谢谢!【参考方案2】:使用时间戳是正确的方法。 请注意,如果要使用 Liquibase,您将无法使用 Timestamp 将列设置为可为空。
我也遇到了一个问题。
【讨论】:
【参考方案3】:您应该使用 java.sql.Timestamp 而不是 java.sql.Date。如有必要,您可以稍后将其用作 java.util.Date 对象。
rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");
希望这会有所帮助。
【讨论】:
构造new Date
是不必要的,因为Timestamp extends Date
。以上是关于JDBC ResultSet getDate 失去精度的主要内容,如果未能解决你的问题,请参考以下文章
ResultSet getDate() 返回不正确和正确的日期