java.util.Date无法强制转换为java.sql.Date

时间:2015-02-04 06:49:22

标签: java oracle servlets

我正在尝试将Date插入数据库,但是我收到错误,因为java.util.Date无法强制转换为java.sql.Date。 请帮忙。

String next_dt = req.getParameter("NextDate");
DateFormat dtFmt = null;
dtFmt = new SimpleDateFormat("yyyy-MM-dd");
dtToday = (Date) dtFmt.parse(next_dt);

5 个答案:

答案 0 :(得分:2)

您已导入java.sql.Data。但dtFmt.parse(next_dt);会返回java.util.Date类型的对象,因此您必须更改

import java.sql.Date;

import java.util.Date;

答案 1 :(得分:0)

DateFormat.parse()会返回java.util.Date,并且您试图非法将其投放到java.sql.Date

假设您继续导入java.sql.Date,您可以成功分配变量:

dtToday = new Date(dtFmt.parse(next_dt).getTime());

答案 2 :(得分:0)

您应该使用java.sql.Timestampjava.sql.Date代替java.util.Date java.sql.Date的问题在于它不会存储时间。所以使用Timestamp是我一直采用的方法。因为它是java.util.date的子类,所以它与DB中的日期和时间戳列兼容。

答案 3 :(得分:0)

添加以下行 - 因为它需要是sql Date而不是util date

java.sql.Date sqlDate = new java.sql.Date(dtToday.getTime());
//now insert this sqlDate

答案 4 :(得分:-1)

public static java.sql.Date convertFromJAVADateToSQLDate(
        java.util.Date javaDate) {
    java.sql.Date sqlDate = null;
    if (javaDate != null) {
        sqlDate = new Date(javaDate.getTime());
    }
    return sqlDate;
}

由于类的名称相同,因此应该给出两个类的完全限定名称(FQN),您也可以使用格式方法将日期转换为正确的SQL格式日期。

public static String toMysqlDateStr(Date date) {
String dateForMySql = "";
if (date == null) {
    dateForMySql = null;
} else {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateForMySql = sdf.format(date);
}

return dateForMySql;

}