我使用了datedicker作为startdate和结束日期,如下所示
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script type="text/javascript">
$(function () {
$( "#startDate" ).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mm-yy'
});
$( "#endDate" ).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mm-yy'
});
});
</script>
<style type="text/css">
.search_textbx
{
background-image:url('/SalesPropeller/calendar.jpg');
background-repeat:no-repeat;
background-position:right;
}
</style>
<form name="form" action="quotationSearchResult.jsp" method="post">
<input type="text" id="startDate" name="startDate" class="search_textbx" readonly="readonly" placeholder="    dd-mm-yyyy"/>
<input type="text" id="endDate" name="endDate" class="search_textbx" readonly="readonly" placeholder="    dd-mm-yyyy"/></td>
</form>
quotationSearchResult.jsp
<div id="divRight">
<%
int count = 0;
int SlNo=1;
%>
<hr />
<h3>Search Result for <u><%= request.getParameter("companyName")%></u> is : </h3>
<hr/>
<div id="divtable_wrapper">
<div id="divtbody" style="height: 470px;">
<form method="post" name="form">
<table class="divtable" width="1140">
<div id="divheader">
<thead>
<tr>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">Sl.NO</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">CompanyName</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">RefNo</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">Quot.Date</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">UserName</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">Grand Total</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">CST</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">VAT5.5</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">VAT14.5</th>
<th style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">ServiceTax</th>
<th colspan="1" style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;background: beige;">Action</th>
</tr>
</thead>
</div>
<%
//Connection con = null;
Object o2 = session.getAttribute("email");
String email = o2.toString();
String companyName = request.getParameter("companyName");
String startDate=request.getParameter("startDate");
String endDate=request.getParameter("endDate");
int cId=0;
//Statement st, st1;
try {
DBConnect db = new DBConnect();
Connection con = db.getCon();
Statement st = con.createStatement();
// System.out.println("At SearchResult.jsp:" + email + "," + category + "," + search + "," + search_tf);
ResultSet rs = st.executeQuery("Select CId,CompanyName,RefNo,Date,UserName,GrandTotal,CST,VAT5,VAT14,ServiceTax from marketing_database.quotationclient_details where companyName='"+companyName+"' AND Date BETWEEN '"+startDate+"' AND '"+endDate+"';");
// String q2 = "update dummy set category='" + category + "' where id = '1';";
// st1.executeUpdate(q2); // To insert the category name to dummy table in database
%>
<%
while (rs.next()) {
%>
<tr><td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td1"><%=SlNo%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td2"><%=rs.getString(2)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td3"><%=rs.getString(3)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td4"><%=rs.getString(4)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td5"><%=rs.getString(5)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td6"><%=rs.getString(6)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td7"><%=rs.getString(7)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td8"><%=rs.getString(8)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td9"><%=rs.getString(9)%></td>
<td style="padding:1px 5px;border-right:1px solid #d47f66;border-bottom:1px solid #d47f66;" class="td10"><%=rs.getString(10)%></td>
<td style="padding:1px 5px;border-bottom:1px solid #d47f66;" class="td12"><input type="button" name="edit" value="Report" style="background-color:#49743D;font-weight:bold;color:#ffffff;" onclick="generateReport(<%= rs.getString(1)%>);" ></td>
<% count++;
SlNo++;%>
</tr>
<%
}
%>
<%
} catch (Exception e) {
e.printStackTrace();
}
%>
</table>
</form>
<br>
<span style="float: left;"> <b><%= count%></b> Search Result Found.</span>
<br><br>
</div>
</div>
</div>
当我将startDate作为&#34; 01-01-2016&#34;和endDate为&#34; 31-01-2016&#34;它正在获取图像中显示的记录 但是,当我将startDate作为&#34; 07-12-2015&#34;并且结束日期为&#34; 18-01-2016&#34;它不是如图所示获取记录
答案 0 :(得分:2)
问题是列&#34;日期&#34;是varchar
,数据库中的正确表单是Date
,此外&#34;日期&#34;对于列来说,它不是一个好名字,因为它也是一个MySQL函数。
由于保存的日期格式String
不是可排序的形式,例如将日期排序为String&#39; s:
07-01-2016
07-12-2015
18-01-2016
07-01-2016在2015年12月7日至2016年1月18日之间不
最佳解决方案是将列格式转换为正确格式数据库中的日期。
如果不可能,请快速解决问题
我们需要将您的String列转换为date并将搜索字符串的正确格式设置为mysql语法
//convert search string to mysql format (note you can define variables for faster code and you should consider handling exceptions)
startDate = new SimpleDateFormat("yyyy-mm-dd").format(new SimpleDateFormat("dd/mm/yyyy").parse(startDate));
endDate = new SimpleDateFormat("yyyy-mm-dd").format(new SimpleDateFormat("dd/mm/yyyy").parse(endDate));
//syntax for query
... AND STR_TO_DATE(`Date`, '%d/%m/%Y') BETWEEN '"+startDate+"' AND '"+endDate+"';"
有关其他信息,请参阅
how to convert a string to date in mysql?
How do I query between two dates using MySQL?
您还应该考虑使用Prepared statement来避免SQL注入问题。