日期转换jsp

时间:2014-09-12 14:50:19

标签: java sql jsp data-conversion

我有jsp代码从用户获取日期(使用html表单),我尝试使用preparedStatament(sql)中的日期。 用户以dd / mm / yyyy格式输入日期,我尝试将其转换为sql date yyyy-mm-dd ......

这是htl形式的输入类型:

<td><input type=date name="fdate"/></td>
<td><input type=date name="tdate"/></td>

这是dates.jsp(运行sql)的源代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
String fDateStr = request.getParameter("fdate");
String tDateStr = request.getParameter("tdate");
Date fdate = format.parse(fDateStr);
Date tdate = format.parse(tDateStr);

PreparedStatement prSelect = con.prepareStatement("select show_id,date,artist, name from shows where date between ? and ?");
prSelect.setDate(1, fdate);
prSelect.setDate(2, tdate);

这是我从setDate行获得的错误:

"The method setDate(int, java.sql.Date) in the type PreparedStatement is not applicable for the arguments (int, java.util.Date)"

我该如何解决?

2 个答案:

答案 0 :(得分:1)

SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");应该像

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy",Locale.ENGLISH);

尝试使用Locale进行安全性

再次Date fdate = format.parse(fDateStr);给你java.util.Date,你需要将它转换为java.sql.Date,把它设置为像这样的PreparedStatement

public static Date convertUtilDateToSqlDate(java.util.Date date){
        if(date != null) {
            Date sqlDate = new Date(date.getTime());
            return sqlDate;
        }
        return null;
    }

然后

prSelect.setDate(1, convertUtilDateToSqlDate(fdte));
prSelect.setDate(2, convertUtilDateToSqlDate(tdate));

答案 1 :(得分:1)

您必须使用java.sql.Date代替java.util.Date

试试这个

prSelect.setDate(1, java.sql.Date.valueOf(fDateStr));
prSelect.setDate(2, java.sql.Date.valueOf(tDateStr));