ClassCastException: java.util.Date cannot be cast to java.sql.Date
阅读原文时间:2023年07月09日阅读:1

解决办法

/\*\*  
 \* 单个方法,作用,根据输入的day:yyyy-mm-dd格式的字符日期,将数据库中的该天所有数据更新为0  
 \* 0表示假期  
 \* @param day  
 \* @throws SQLException  
 \* @throws ParseException  
 \*/  
public void UpdateDayTypeByLeaseDay(String day) throws SQLException, ParseException{  
    //UPDATE NYC\_TRIP\_SUM\_BYHOUR SET daytype='0' where leaseday='2016-12-31'  
    String sql="UPDATE NYC\_TRIP\_SUM\_BYHOUR SET daytype='0' where leaseday=?";  
    //建立连接  
    Connection conn=daoUtil.getConnection();  
    PreparedStatement preStmt=conn.prepareStatement(sql);

// SimpleDateFormat sdfDay=new SimpleDateFormat("yyyy-MM-dd");//小写的mm表示的是分钟

    //先将字符日期转为util日期  
    SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");  
    Date dayDateUtil=df.parse(day);  
    System.out.println("转换成Util日期"+dayDateUtil);  
    //由于util在sql中不符,再转为sql日期  
    java.sql.Date dayDateSql = new java.sql.Date(dayDateUtil.getTime());  
    System.out.println("转换成sql日期"+dayDateSql);

    //将日期参数传入  
    preStmt.setDate(1, dayDateSql);  
    preStmt.executeQuery();  
    //关闭连接资源  
    preStmt.close();  
    conn.close();

}

关键在于中间的几行:

//先将字符日期转为util日期
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
Date dayDateUtil=df.parse(day);
System.out.println("转换成Util日期"+dayDateUtil);

//由于util在sql中不符,再转为sql日期
java.sql.Date dayDateSql = new java.sql.Date(dayDateUtil.getTime());
System.out.println("转换成sql日期"+dayDateSql);