Reputation: 43
I have a problem when getting a Date object from a ResultSet. In database it has a value (for example 2014-08-01) and after getting it from resultSet, it has another value (2014-08-31). I know that ResultSet's getDate method returns java.sql.Date, but I tried a few solutions, such as:
Date date=new java.util.Date(resultSet.getDate(3).getTime());
or
Date date=resultSet.getTimestamp();
but the problem was the same.
If I try
Date date=resultSet.getDate();
It throws a NullPointerException.
Can anybody explain this?
Upvotes: 4
Views: 54571
Reputation: 31
You should use the java.sql.Date
instead of java.util.Date
, because ResultSet.getDate()
returns an SQL Date, and not a Java one.
Upvotes: 2
Reputation: 8946
In your case you were not providing the columnName of the Date field to be retrieved.
This should do the job
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);
}
iterate over the ResultSetObject
get the Date from the ResultSetObject
which is java.sql.Date
then convert it to java.util.Date
Upvotes: 13