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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 14:33:58  来源:igfitidea点击:

How to get Date from a resultSet

javamysqlsqljdbc

提问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());

or

Date date=resultSet.getTimestamp();

but the problem was the same. If I try

Date 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 ResultSetObjectget the Date from the ResultSetObjectwhich is java.sql.Datethen convert it to java.util.Date

遍历ResultSetObject从一开始的日期ResultSetObjectjava.sql.Date然后将其转换为java.util.Date

回答by loloreyn

You should use the java.sql.Dateinstead 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 日期。