java.util.Date 无法转换为 java.sql.Date
java.util.Date cannot be cast to java.sql.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);
您已导入 java.sql.Data
。但是 dtFmt.parse(next_dt);
returns 类型的对象 java.util.Date
所以你必须改变
import java.sql.Date;
到
import java.util.Date;
DateFormat.parse()
returns a java.util.Date
,而您试图将其非法转换为 java.sql.Date
.
假设您继续导入 java.sql.Date
,您可以像这样成功地分配变量:
dtToday = new Date(dtFmt.parse(next_dt).getTime());
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;
}
由于 class 的名称相同,因此应给出两个 class 的完全限定名称 (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;
}
您应该使用 java.sql.Timestamp
或 java.sql.Date
而不是 java.util.Date
java.sql.Date
的问题是它不会存储时间。所以使用时间戳是我一直采用的方法。因为它是 java.util.date
的子 class,所以它与数据库中的日期和时间戳列兼容。
添加以下行 - 因为它需要是 sql 日期而不是实用日期
java.sql.Date sqlDate = new java.sql.Date(dtToday.getTime());
//now insert this sqlDate
我正在尝试将日期插入数据库,但出现错误,因为 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);
您已导入 java.sql.Data
。但是 dtFmt.parse(next_dt);
returns 类型的对象 java.util.Date
所以你必须改变
import java.sql.Date;
到
import java.util.Date;
DateFormat.parse()
returns a java.util.Date
,而您试图将其非法转换为 java.sql.Date
.
假设您继续导入 java.sql.Date
,您可以像这样成功地分配变量:
dtToday = new Date(dtFmt.parse(next_dt).getTime());
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;
}
由于 class 的名称相同,因此应给出两个 class 的完全限定名称 (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;
}
您应该使用 java.sql.Timestamp
或 java.sql.Date
而不是 java.util.Date
java.sql.Date
的问题是它不会存储时间。所以使用时间戳是我一直采用的方法。因为它是 java.util.date
的子 class,所以它与数据库中的日期和时间戳列兼容。
添加以下行 - 因为它需要是 sql 日期而不是实用日期
java.sql.Date sqlDate = new java.sql.Date(dtToday.getTime());
//now insert this sqlDate