从ResultSet获取Date对象时遇到问题。在数据库中它有一个值(例如2014-08-01),从resultSet获取后,它有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但我尝试了一些解决方案,例如:
Date date=new java.util.Date(resultSet.getDate(3).getTime());
或
Date date=resultSet.getTimestamp();
但问题是一样的。
如果我尝试
Date date=resultSet.getDate();
它抛出NullPointerException。
有人可以解释一下吗?
答案 0 :(得分:7)
在您的情况下,您没有提供要检索的Date字段的columnName。
这应该做的工作
while (rs.next()) {
java.sql.Time dbSqlTime = rs.getTime("columnName");
java.sql.Date dbSqlDate = rs.getDate("columnName");
java.sql.Timestamp dbSqlTimestamp = rs.getTimestamp("columnName");
java.util.Date dbSqlTimeConverted = new java.util.Date(dbSqlTime.getTime());
java.util.Date dbSqlDateConverted = new java.util.Date(dbSqlDate.getTime());
System.out.println(dbSqlTimeConverted);
System.out.println(dbSqlDateConverted);
}
遍历ResultSetObject
从ResultSetObject
java.sql.Date
获取日期,然后将其转换为java.util.Date
答案 1 :(得分:2)
您应该使用java.sql.Date
而不是java.util.Date
,因为ResultSet.getDate()
会返回SQL日期,而不是Java日期。