簡體   English   中英

如何在 PHP CodeIgniter 中按選定日期過濾記錄?

[英]How can I filter out records by selected dates in PHP CodeIgniter?

我正在嘗試使用客戶報告繪制圖表,並且我想過濾掉由於非商業日而關閉的多天商店。 我也有一個過濾日期從和到。

if( $dateFrom != null ) :
        $dateFrom .= ' 00:00:01';
        $this->db->where('created >=', $dateFrom);
    endif;
    if( $dateTo != null ) :
        $dateTo .= ' 23:59:59';
        $this->db->where('created <=', $dateTo);
    endif;

我正試圖弄清楚如何添加一個額外的多天過濾器。 所以我目前有這樣的東西,但它不起作用。

$this->db->where("created BETWEEN '2020-01-01 00:00:01' AND '2020-01-25 23:59:59'"); 
$this->db->where("created BETWEEN '2020-01-26 00:00:01' AND '2020-04-05 23:59:59'"); 
$this->db->where("created BETWEEN '2020-04-06 00:00:01' AND '2020-04-25 23:59:59'");
$this->db->where("created BETWEEN '2020-04-26 00:00:01' AND '2020-06-27 23:59:59'");
$this->db->where("created BETWEEN '2020-06-28 00:00:01' AND '2020-08-29 23:59:59'");
$this->db->where("created BETWEEN '2020-08-30 00:00:01' AND '2020-12-12 23:59:59'");
$this->db->where("created BETWEEN '2020-12-13 00:00:01' AND '2020-12-19 23:59:59'");
$this->db->where("created BETWEEN '2020-12-20 00:00:01' AND '2020-12-31 23:59:59'");

所以我只是想弄清楚如何從日期和日期中過濾出除了設置過濾器之外的天數。

是否有解決方法或任何修復?

謝謝!

您可以將所有特殊日期放在一個數組中,如下所示:

$exceptions = ['2020-04-26', '2020-04-27']; // And so on

然后捕獲/定義您的日期范圍:

$dateFrom = $some_source_of_data;
$dateTo = $some_source_of_data2;

然后:

$this->db->where("DATE(created) BETWEEN DATE('{$dateFrom}') AND DATE('{$dateTo}')"); 
$this->db->where("DATE(created) NOT IN (".implode(',', $exceptions).")"); 

自己想出這個。 我添加了“NOT BETWEEN”,然后添加了我想過濾掉的日子。

暫無
暫無

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

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