JDBC ResultSet getDate方法丢失精度

27

我在使用ResultSet.getDate(x)时失去了精度。基本上:

rs = ps.executeQuery();
rs.getDate("MODIFIED");

如果MODIFIED是Oracle TIMESTAMP字段的默认精度,则返回的日期将被截断为天。我认为可能有一些我忽略的JDBC调整;通常TIMESTAMP与DATE兼容,但我希望不必重新定义整个表。

3个回答

63

4
注意自己——阅读说明文档。我以为在其他地方它能正常工作。 - orbfish
2
"java.sql.Date被定义为永恒的日期。" 那个声明拯救了我的生命。谢谢! - Bitcoin Cash - ADA enthusiast

4

您应该使用java.sql.Timestamp而不是java.sql.Date。如果需要,您可以随后将其用作java.util.Date对象。

rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");

希望这可以帮助你。

2
构造new Date是不必要的,因为Timestamp extends Date - BalusC

0
使用时间戳是正确的方法。请注意,如果您要使用Liquibase,则无法将列设置为可空。
我也遇到了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接