Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从结果集获取日期_Java_Mysql_Sql_Jdbc - Fatal编程技术网

Java 如何从结果集获取日期

Java 如何从结果集获取日期,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,从ResultSet获取日期对象时出现问题。在数据库中,它有一个值(例如2014-08-01),从resultSet获取后,它有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但我尝试了一些解决方案,例如: Date-Date=newjava.util.Date(resultSet.getDate(3.getTime()) 或 Date-Date=resultSet.getTimestamp() 但问题是一样的。 如果我尝试 Date

从ResultSet获取日期对象时出现问题。在数据库中,它有一个值(例如2014-08-01),从resultSet获取后,它有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但我尝试了一些解决方案,例如:

Date-Date=newjava.util.Date(resultSet.getDate(3.getTime())



Date-Date=resultSet.getTimestamp()

但问题是一样的。 如果我尝试

Date-Date=resultSet.getDate()

它抛出一个NullPointerException


有人能解释一下吗?

您应该使用
java.sql.Date
而不是
java.util.Date
,因为
ResultSet.getDate()
返回的是sql日期,而不是java日期。

在您的例子中,您没有提供要检索的日期字段的列名

这应该可以完成任务

 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

您必须指定列索引或名称,
Date-Date=resultSet.getDate(3)
Date-Date=resultSet.getDate(“日期列”)看起来可能有关联。它的答案对你有帮助吗?只是想澄清一下:“另一个值”是真的2014-08-31(30天后)还是真的2014-07-31(前一天)?是2014-08-31,30天后列的数据类型到底是什么?并确认这是MySQL,如标签所示。您输入的值、您期望提取的值以及让您惊讶的值究竟是什么?你到底在INSERT和SELECT中写了什么代码?我觉得奇怪,这是公认的答案。不提供列名会导致编译时错误(因为没有不带参数的重载),不会出现错误的日期,也不会导致
NullPointerException