簡體   English   中英

PHP MYSQL日期范圍搜索與jQuery Datepicker

[英]PHP MYSQL Date Range Search with Jquery Datepicker

我已經嘗試了幾種不同的解決方案來解決問題,但似乎找不到有效的解決方案。 我正在嘗試從mysql數據庫中的datetime字段中搜索日期范圍。 這是表格之前的我的jQuery:

  <script type="text/javascript" language="javascript">
            jQuery(function() {
                jQuery( "#from" ).datepicker({
                  defaultDate: "+1w",
                  changeMonth: true,
                  numberOfMonths: 1,
                  dateFormat: "yy-mm-dd",
                  onClose: function( selectedDate ) {
                    $( "#to" ).datepicker( "option", "minDate", selectedDate );
                  }
                });
                jQuery( "#to" ).datepicker({
                  defaultDate: "+1w",
                  changeMonth: true,
                  numberOfMonths: 1,
                  dateFormat: "yy-mm-dd",
                  onClose: function( selectedDate ) {
                    jQuery( "#from" ).datepicker( "option", "maxDate", selectedDate );
                  }
                });
            });
</script>

這是我的簡單表格:

<form method="post" action="search.php">
<p>Select a date range: </p><label style="color:#FFF;" for="from">From</label>
From:<input type="text" id="from" name="from" />
<label style="color:#FFF;" for="to" >to</label>
To:<input type="text" id="to" name="to" />
<input name="export" type="submit" value="Search" />
</form>

這是我的sql語句:

        $hostname = ""; //SET SERVER/HOSTNAME
    $dbusername = ""; //SET DATABASE USERNAME
    $dbname = ""; //SET DATABASE NAME
    $dbpassword = ""; //SET DATABASE USERNAME
    $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 
    if (!$link) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); 
    } 
$sql = "SELECT * FROM log WHERE call_date >= DATE_FORMAT('" . $from . "', '%Y%m%d') AND call_date <=  DATE_FORMAT('" . $to . "', '%Y%m%d')";
//$sql = "SELECT * FROM log WHERE call_date >= '".date("Y-m-d", strtotime($from))."' AND call_date <=  '".date("Y-m-d", strtotime($to))."'";  

//$sql = "SELECT * FROM log WHERE call_date >= '$from' AND call_date <=  '$to'"; 
    $result = mysqli_query($link, $sql, MYSQLI_STORE_RESULT);
while($row = $result->fetch_assoc()){
        $name= $row['name'];
        $disposition = $row['did_id'];
        $date = $row['call_date'];
}

...然后輸出我的結果。 您可以看到我嘗試了一些已經注釋掉的不同的sql語句。 我知道可以連接到數據庫,知道日期格式為yyyy-mm-dd,日期時間字段的格式為yyyy-mm-dd hh:mm:ss。 任何幫助是極大的贊賞。 謝謝。

更改

   $sql = "SELECT * FROM log WHERE call_date >= DATE_FORMAT('" . $from . "', '%Y%m%d') AND call_date <=  DATE_FORMAT('" . $to . "', '%Y%m%d')";

   $sql = "SELECT * FROM log WHERE call_date >= DATE_FORMAT('" . $from . "', '%Y/%m/%d') AND call_date <=  DATE_FORMAT('" . $to . "', '%Y/%m/%d')"; 

jQuery返回格式dateFormat: "yy-mm-dd"

DATE_FORMAT('" . $to . "', '%Y%m%d')";
改成
DATE_FORMAT('" . $to . "', '%Y-%m-%d')";

如果您沒有時間定義,MySQL將自動定義為00:00:00。

因此,如果您選擇日期2000-01-02 ,則MySQL將選擇2000-01-02 00:00:00

這是選擇日期的示例:
$sql = "SELECT * FROM log WHERE call_date >= DATE_FORMAT('{$from}', '%Y-%m-%d') AND call_date <= DATE_FORMAT('{$to} 23:59:59', '%Y-%m-%d %H:%i:%s')";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM