2016-01-08 53 views
1

我所提供的开始日期和结束日期日期选择器是如下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="&nbsp &nbsp dd-mm-yyyy"/> 
     <input type="text" id="endDate" name="endDate" class="search_textbx" readonly="readonly" placeholder="&nbsp &nbsp dd-mm-yyyy"/></td> 
</form> 

quotationSearchResult.jsp

<div id="divRight"> 
       &nbsp; 
       <% 
        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;"> &nbsp;<b><%= count%></b> Search Result Found.</span> 
       <br><br> 
       </div> 
       </div> 
       </div> 

当我给一个的startDate不工作“01-01-2016”和结束日期为“31-01-2016”它是提取记录如图所示 enter image description here enter image description here 但是,当我给startDate为“07-12-2015”和endDate为“18-01-2016”它不取的纪录显示的图像 enter image description here enter image description here

所以,这是怎么回事,为什么它没有比较几年properly.I是SQL数据库以及 enter image description here

+0

调试它,确定问题所在。字符串值是否正确?String startDate = request.getParameter(“startDate”);'? –

+0

也许你没有这些日期间记录2015年7月12日和18-01-2016 – Abdelhak

+0

看看开发人员工具后的数据,当你发送一个请求,并确保东西被发送到了什么。 –

回答

2

问题是,列“日期”是一个varchar,在数据库中正确的形式是Date,而且“日期”是不是一列一个好名字,因为它也是一个MySQL的功能。

由于保存的日期格式String不是一个可排序的形式,例如在你的日期排序为字符串的:

  1. 2016年7月1日

  2. 2015年7月12日

  3. 18-01-2016

2016年7月1日是和18-01-2016之间的2015年7月12日

最好的解决办法是转换列的格式来纠正数据库格式的日期。

速战速决,如果这是不可能的

我们需要您的字符串列转换为日期和设置您的搜索字符串的正确格式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注入问题。

Avoiding SQL Injection

+0

为什么给出“strDate”和“startDate”这两个名称?他们应该是相同的还是不同的? –

+0

同样会编辑答案... –

+0

其实我并没有应用“startDate”和“endDate”的代码,所以有些日期不匹配。后来当我读你仔细回答,然后我明白,这些行可以改变场景,它确实。再次感谢 –

相关问题