Java 如何从结果集中获取日期
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24736427/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get Date from a resultSet
提问by user3836820
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());
orDate date=resultSet.getTimestamp();
but the problem was the same.
If I tryDate date=resultSet.getDate();
It throws a NullPointerException.
从 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。
Can anybody explain this?
有人可以解释一下吗?
采纳答案by SparkOn
In your case you were not providing the columnName of the Date field to be retrieved.
在您的情况下,您没有提供要检索的日期字段的 columnName。
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
遍历ResultSetObject
从一开始的日期ResultSetObject
被java.sql.Date
然后将其转换为java.util.Date
回答by loloreyn
You should use the java.sql.Date
instead of java.util.Date
, because ResultSet.getDate()
returns an SQL Date, and not a Java one.
您应该使用java.sql.Date
代替java.util.Date
,因为ResultSet.getDate()
返回的是 SQL 日期,而不是 Java 日期。