我的数据库表如下所示
| 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天之间的所有记录。我很感谢你的帮助。谢谢。
答案 0 :(得分:6)
使用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);
答案 1 :(得分:1)
这是你可以实现的目标:
$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
答案 2 :(得分:0)
您可以使用以下查询根据您的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);
答案 3 :(得分:0)
在;
函数后删除NOW()
分号,分号是中断查询,因此YySql在分号后理解另一个查询
这个查询可以正常工作
$result = $this->db->query('SELECT * FROM '.$table.'
WHERE `date` BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW() AND '.$condition);
答案 4 :(得分:0)
我认为这是最好的方式,您可以使用dateiff这样按日期在任意两个日期之间获取任何查询
$result = $this->db->query("SELECT * FROM ".$table." WHERE datediff('". $your_date ."', row_date) <= 15")->get()->result();
答案 5 :(得分:0)
在 2021 年更新 CI 4 的答案
$myModel = new WhateverModel();
$result = $myModel->where("date BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW()")->findAll();