ClassCastException: java.util.Date cannot be cast to java.sql.Date

解决办法

    /**
     * 单个方法,作用,根据输入的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);
原文地址:https://www.cnblogs.com/lx06/p/15739812.html