2014-09-12 92 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));