我已經掙扎了幾個星期。最近我在這里發布了一個使用 Datepicker 的 CodeIgniter Datatables 服務器端日期范圍問題,但沒有運氣。
然后我決定通過測驗 Codeigniter 模型來隔離問題,看起來那里有問題。
下面是代碼和圖片。
Codeigniter 模型
function get_allbillinglistByDate($startdate,$enddate){
$data = array();
$sdate = "09/01/2020";
$edate = "11/01/2020";
$this->db->from('invoices');
$multipleWhere = ['invoices.Approved' => 1,'invoices.xero' => 0];
$this->db->where($multipleWhere);
//$this->db->where('Invoice_Date BETWEEN "'. date('m-d-Y', strtotime($sdate)). '" and "'. date('m-d-Y', strtotime($edate)).'"');
$this->db->where('Invoice_Date >=', date('m-d-Y', strtotime($sdate)));
$this->db->where('Invoice_Date <=', date('m-d-Y', strtotime($edate)));
$Q = $this->db->get();
if ($Q->num_rows() > 0){
foreach ($Q->result_array() as $row){
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
這是螢屏截圖 日期列,其中僅應顯示 2020 年記錄,但也顯示 2021 年
不知道哪里出了問題日期列應該只顯示 2020 年的記錄,但它也顯示了 2021 年
請指教。
uj5u.com熱心網友回復:
盡管 MySQL 嘗試以多種格式解釋值,但日期部分必須始終按年-月-日順序給出(例如,'98-09-04'),而不是按月-日-年或日-月-其他地方常用的年份命令(例如,'09-04-98'、'04-09-98')。要將其他順序的字串轉換為年-月-日順序,STR_TO_DATE() 函式可能很有用。
參考:https : //dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
所以,改變你的代碼如下
date('Y-m-d', strtotime($sdate)
uj5u.com熱心網友回復:
Raj 的回答是正確的。您可以根據您的預期格式進行調整,如下所示
date('d/m/Y', strtotime($sdate));
date('d/m/Y', strtotime($edate));
您方法的另一種語法,但您可能需要稍微調整一下。您應該格式化日期引數,然后將它們發送到此方法,您可以按照我們的描述對其進行格式化
function get_allbillinglistByDate($startdate,$enddate){
$sql = "SELECT * FROM invoices where Approved = 1 AND xero = 0 AND DATE(Invoice_Date) BETWEEN ? AND ?";
$data = array();
array_push($data, $startdate);
array_push($data, $enddate);
$query = $this->db->query($sql, $dataArr);
return (array)$query->result_array();
}
有關更多資訊,請查看https://www.php.net/manual/en/function.date.php
uj5u.com熱心網友回復:
好的,問題解決了。我必須將 PHPMyAdmin 中的 MYSQL 表中的列型別從 varchar 更改為 date 以獲得日期范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/392988.html
