【问题标题】:startdate and enddate not working when there is a year change当年份发生变化时,开始日期和结束日期不起作用
【发布时间】:2016-04-12 19:57:06
【问题描述】:

我使用日期选择器作为开始日期和结束日期,如下所示

       <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”并将 endDate 作为“31-01-2016”时,它正在获取如图所示的记录 但是当我将 startDate 设为“07-12-2015”并将 endDate 设为“18-01-2016”时,它不会获取如图所示的记录

那么发生了什么以及为什么它没有正确比较年份。我也是 sql 数据库

【问题讨论】:

  • 调试它,确定问题出在哪里。字符串值是否正确 String startDate=request.getParameter("startDate");
  • 也许您在 07-12-2015 和 18-01-2016 之间没有记录
  • 在您发送请求时查看开发人员工具中的发布数据并确定发送的是什么。
  • 你可以试试07-12-201531-01-2016 吗?
  • 是的,我试过你说的,但它没有获取记录

标签: javascript java sql jsp date


【解决方案1】:

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

由于保存的日期格式String 不是可排序的形式,因此将日期排序为字符串的示例:

  1. 07-01-2016

  2. 07-12-2015

  3. 18-01-2016

07-01-2016 不是介于 07-12-2015 和 18-01-2016 之间

最好的解决方案是将列格式转换为数据库中正确的日期格式

如果无法做到这一点,可以快速解决

我们需要将您的字符串列转换为日期,并将搜索字符串的正确格式设置为 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

【讨论】:

  • 为什么给定“strDate”和“startDate”名称。它们应该相同还是不同??
  • 实际上我没有应用“startDate”和“endDate”的代码,所以有些日期不匹配。后来当我仔细阅读你的回答时,我明白这些行可以改变场景并且确实如此。谢谢再次
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
相关资源
最近更新 更多