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

问题描述 投票:0回答:2

我面临着一个独特的问题。

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

java resultset
2个回答
1
投票

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

oracle.jdbc.mapDateToTimestamp

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

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


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.