【问题标题】:JDBC ResultSet getDate losing precisionJDBC ResultSet getDate 失去精度
【发布时间】:2011-03-17 01:01:51
【问题描述】:

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

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

返回截断到 MODIFIED 是默认精度的 Oracle TIMESTAMP 字段的日期。我认为我可能缺少一些 JDBC 调整;通常 TIMESTAMP 与 DATE 兼容,但我希望不必重新定义整个表。

【问题讨论】:

    标签: java oracle date jdbc resultset


    【解决方案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
      猜你喜欢
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2014-02-05
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多