java.util.Date 不能转换为 java.sql.Date [重复]

Posted

技术标签:

【中文标题】java.util.Date 不能转换为 java.sql.Date [重复]【英文标题】:java.util.Date cannot be cast to java.sql.Date [duplicate] 【发布时间】:2015-04-03 14:33:37 【问题描述】:

我正在尝试将日期插入数据库,但由于 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.util.Date 不是java.sql.Date 的孩子,反之亦然。我相信你可以使用new java.sql.Date(dtToday.getTime()); sqlDate = new Date(javaDate.getTime()); 我认为 dtToday 是您要插入的日期。您需要将其转换为 sql 日期 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:
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;

【讨论】:

【参考方案4】:

DateFormat.parse() 返回一个java.util.Date,而您正试图将其非法转换为java.sql.Date

假设你继续导入java.sql.Date,你可以像这样成功地分配变量:

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

【讨论】:

仍然无法插入数据库..【参考方案5】:

您已导入java.sql.Data。但是dtFmt.parse(next_dt); 返回一个java.util.Date 类型的对象,所以你必须改变

import java.sql.Date;

import java.util.Date;

【讨论】:

我也试过了,但后来我无法将 dtToday 插入表中。 如果您需要sql语句的日期,您必须将java.Util.Date转换为java.sql.Date,请参阅here如何做到这一点。

以上是关于java.util.Date 不能转换为 java.sql.Date [重复]的主要内容,如果未能解决你的问题,请参考以下文章

jdbc-java.sql.date和java.util.date之间转换

将 java.util.Date 转换为字符串

java util.Date 转换为sql.Date

如何从 java.sql.Timestamp 转换为 java.util.Date?

尝试将数据插入数据库表时,java.util.Date 无法转换为 java.sql.Date [关闭]

如何在 GMT(格林威治)时间将 XMLGregorianCalendar 转换为 java.util.Date