【发布时间】:2012-07-25 18:49:37
【问题描述】:
我有一个需要 2 个日期的表格。
<form name="dateInput" action="dateResult.jsp" method="get">
<input type="text" name="startDate" />
<input type="text" name="endDate" />
<input type="submit" value="Submit" />
</form>
我希望它能够过滤并显示在结果页面上的两个输入之间有日期的所有记录。
将文本解析为日期:
<%
DateFormat formatter;
formatter = new SimpleDateFormat("MM/dd/yyyy");
String startDay;
startDay = request.getParameter("startDate");
java.util.Date startingDay = formatter.parse(startDay);
String endDay;
endDay = request.getParameter("endDate");
java.util.Date endingDay = formatter.parse(endDay);
%>
SQL 查询:
rs = stmt.executeQuery( "SELECT * FROM [Inventory Tracking] WHERE [Inventory Tracking].[Purchase_Date] => "+ startingDay +" AND < "+endingDay);
我已经搞砸了几个小时,每次更改都会返回空白结果页面或错误页面。我究竟做错了什么?
我应该将 java.util.Date 转换为 java.sql.Date 吗?
我应该使用 BETWEEN/AND 代替 吗?
【问题讨论】:
-
为什么在将日期传递给 sql 请求之前解析它们?因为当您执行
select ... [Purchase_Date] => "+ startingDay时,这将调用java.util.date的toString()函数,并且此函数将日期返回为dow mon dd hh:mm:ss zzz yyyy例如(这取决于使用的jdk)。为什么你不只是做"SELECT * FROM [Inventory Tracking] WHERE [Inventory Tracking].[Purchase_Date] => "+ startDay + "AND < "+endDay);