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);