2014-09-12 74 views
0

我有jsp代码从用户获取日期(使用html表单),我尝试在preparedStatament(sql)中使用日期。 用户在格式DD/MM/YYYY输入日期和我尝试将其转换成SQL日期YYYY-MM-DD ...日期转换jsp

这是在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)" 

我该如何解决?

+0

一些数据库也不会允许你创建一个名为“日期”一栏......? – Leo 2014-09-12 14:55:08

+0

没关系,我有一个名为“date”的列。这是海波SQL(JBoss的) – user3557163 2014-09-12 14:59:29

回答

1

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

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

尝试使用语言环境安全

再次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)); 
+0

我改变了它,但我仍然有: 在此行找到多个注释: \t - 在类型的PreparedStatement方法的setDate(INT,java.sql.Date)不适用 \t为参数(int,java.util.Date) \t - 类型PreparedStatement中的方法setDate(int,java.sql.Date)不适用 \t用于参数(int,java.util.Date) on行“prSelect.setDate(1,fdate)” – user3557163 2014-09-12 15:35:34

+0

检查完整答案 – SparkOn 2014-09-12 15:39:20

+0

我做到了,但现在我得到: javax.servlet.ServletException:java.text.ParseException:Unparseable date:“01/01/2013” – user3557163 2014-09-12 16:16:56

1

你必须什么DBMS您使用的使用java.sql.Date代替java.util.Date

试试这个

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