【问题标题】:ResultSet getDate(1)结果集 getDate(1)
【发布时间】:2017-07-13 15:42:17
【问题描述】:

如何从ResultSet返回oracle.sql.DATE? 它返回一个 Java 日期,而不是 ORACLE 日期。

我收到一个错误:

类型不匹配:无法从日期转换为日期

ResultSetIterator iter;
...
ResultSet rs = iter.getResultSet();
if (rs.next()) {
    date = rs.getDate(1);
}

我的查询:

SELECT MIN(date_created) FROM tbl_user group by date_created;

【问题讨论】:

  • 显示你执行的查询
  • 尝试getObject() 然后将其转换为oracle.sql.DATE

标签: sql oracle date resultset type-conversion


【解决方案1】:

oracle.sql.DATE 是什么?你的意思是java.sql.Date? java日期是什么意思?你知道java.sql.Datejava.util.Date 的子类吗?

试试这个会是什么输出?

ResultSet rs = iter.getResultSet();
if (rs.next()) {
    date = rs.getDate(1);
    if (date instanceof java.sql.Date)
       System.out.println("sql date");
    if (date instanceof java.util.Date)
       System.out.println("util date");

}

编辑:

我看到here 你可能可以这样做:

ResultSet rs = iter.getResultSet();
    if (rs.next()) {
        date = rs.getDate(1);
        if (date instanceof java.sql.Date)
           return new oracle.sql.DATE(date);
}

【讨论】:

  • 我的意思是 oracle.sql.DATE 扩展了 oracle.sql.Datum (ojdbc 6)
  • 我找到了解决办法。
  • 查看我的编辑...从结果集中返回的值应该是java.sql.Date,因此您可以将其键入java.sql.Date 并传递给oracle.sql.DATE(java.sql.Date date) 的构造函数
【解决方案2】:

您可以将 ResultSet 转换为 OracleResultSet,然后使用 getDATE() 方法:

OracleResultSet rs = (OracleResultSet)iter.getResultSet();
if (rs.next()) {
    oracle.sql.DATE date = rs.getDATE(1);
}

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多