与java.util.Date和java.sql.TimeStamp冲突

时间:2011-07-20 15:40:38

标签: java resultset

我面临一个独特的问题。

我正在查询数据库字段,其数据类型(在oracle中)为DATE。我正在从resultSet中检索rs.getObject(“myDate”)的值。我们有两个配置相同的设置。在我编写rs.getObject(“myDate”)。getClass()时的一个设置中,我正在调用java.sql.TimeStamp,而在另一个设置上它返回java.util.Date。我面临的问题是,当它返回一个日期对象时,它忽略了时间并仅返回日期部分。

2 个答案:

答案 0 :(得分:1)

我认为可以使用此连接属性控制此行为:

oracle.jdbc.mapDateToTimestamp

请参阅此论坛帖子,例如:

http://forums.oracle.com/forums/thread.jspa?threadID=483903

答案 1 :(得分:0)

als info:java.sql.Timestamp是一个java.util.Date,因为它扩展了它。

日期也有时间,虽然它没有纳秒,但这是唯一的区别。

可悲的是,这就是它实施的方式,但不是应该的方式。来自他们自己的文档:

  

Timestampjava.util.Date之间的继承关系实际上表示实现继承,而不是类型继承。   https://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html

这意味着他们懒得写一些封装。这导致许多怪癖,例如哈希码不会改变为纳秒和不对称等于。