有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当年度发生变化时,javascript startdate和enddate不起作用

我使用了一个日期选择器来选择开始日期和结束日期,如下所示

       <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>

当我给出起始日期为“01-01-2016”和结束日期为“31-01-2016”时,它正在获取如图所示的记录 enter image description here enter image description here 但当我将起始日期设为“07-12-2015”,将结束日期设为“18-01-2016”时,它并没有获取如图所示的记录 enter image description here enter image description here

那么现在发生了什么,为什么不能正确地比较年份呢。我也是sql数据库 enter image description here


共 (1) 个答案

  1. # 1 楼答案

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

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

    1. 2016年1月7日

    2. 2015年12月7日

    3. 2016年1月18日

    2016年1月7日在2015年12月7日至2016年1月18日之间为

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

    如果这是不可能的,可以快速修复

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