我正在尝试将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);
答案 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.Timestamp
或java.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;
}