[英]Codeigniter: how to get data between today and last 15 days from database
我的數據庫表如下所示
| id | user_name | address | contact | date | |----|-----------|---------|---------|----------| | 1 | john | NY | 12345 |2015-4-20 | | 2 | Mart | NY | 54345 |2015-4-05 | | 3 | Drew | US | 67340 |2015-3-14 |
我的controller
功能是
function orders()
{
$data['orders'] = $this->common_model->get_data_between_15days('tbl_orders',array('status'=>'1'));
$data['title']='Orders';
$data['main_content']='users/orders_view.php';
$this->load->view('admin/includes/template',$data);
}
我的model
功能是
public function get_data_between_15days($table, $condition)
{
$result = $this->db->get_where($table, $condition);
if($result)
{
return $result->result_array();
}
}
現在我想從數據庫中獲取今天和過去 15 天之間的記錄。我試過這樣
$result = $this->db->query('SELECT * FROM '.$table.' WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW(); AND '.$condition);
但它不工作。 我也想獲得過去 15 天到 30 天之間的所有記錄。 我將不勝感激您的幫助。 謝謝你。
使用 CodeIgniter 標准查詢
$this->db->select('*');
$this->db->where('date BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW()');
$this->db->where($conditions);
$result = $this->db->get($table);
這是您可以實現的方式:
$qs = "";
if( is_array($condition) && count($condition) > 0 ):
foreach( $condition as $_k => $_v ) {
$qs .= "and $_k = {$_v} ";
}
endif;
'SELECT * FROM '.$table.'
WHERE `date` BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW() '.$qs
您可以使用以下查詢根據您的 localhost 時區獲取過去 15 天的數據,因為您的 MYSQL 數據庫時區可能與您的 localhost 不同,那么您將無法從數據庫中獲得正確的數據。
$result = $this->db->query('SELECT * FROM '.$table.' WHERE date >= '.date('Y-m-d', time() - (15 * 24 * 60 * 60)).' AND date <= '.date('Y-m-d').' AND '.$condition);
刪除;
NOW()
函數后的分號,分號是中斷查詢,因此 YySql 理解分號后的另一個查詢
這個查詢會起作用
$result = $this->db->query('SELECT * FROM '.$table.'
WHERE `date` BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW() AND '.$condition);
我認為最好的方法您可以使用 dateiff 按天數來獲取任何兩個日期之間的任何查詢
$result = $this->db->query("SELECT * FROM ".$table." WHERE datediff('". $your_date ."', row_date) <= 15")->get()->result();
2021 年更新 CI 4 的答案
$myModel = new WhateverModel();
$result = $myModel->where("date BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW()")->findAll();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.