codeigniter中的活动记录的上限

问题描述:

我在我的模型中有这个功能,它的目的是从实际的一天开始获得过去30天的统计数据,在我到达第30天之前它工作正常,然后我发现它从最早的日期开始计数,所以我将order_by从“ase”翻到了“desc”,但它似乎仍然会在最早的日期之前返回并计数,并且不会向我提供我想要的数据,所以我想知道是否有任何使用codeigniter的方式,并给出应该是实际日期的“限制”的起点。codeigniter中的活动记录的上限

function graph_data($id_person) 
{ 
    $this->db->limit(30); // get data for the last 30 days including the curent day 

    $this->db->where('personid',$id_person); 
    $this->db->order_by('date', 'ase'); 
    $query = $this->db->get('stats'); 

    foreach($query-> result_array() as $row) 
    { 
    $data[] = $row; 
    }  
    return $data; 
} 
+0

请参阅本页:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html – hjpotter92 2012-03-18 03:09:53

+0

您的意思是使用'A SC'?它不是'ase' ...什么数据类型是'date'? – 2012-03-18 03:29:49

+0

不,我的意思是ase,并且表中的日期类型只是DATE – 2012-03-18 03:46:42

我终于发现实际的前一天给一个范围或数天,有29天的解决方案,无需使用BETWEEN和工作正常

<?php 
function graph_data($id_person) 
{ 
$today = date('Y-m-d'); 
$lastdate = date('Y-m-d', strtotime('-29 days', strtotime($today)));// 30 days ago 

$this->db->where('personid',$id_person); 
$this->db->where("date <= '$today'"); 
$this->db->where("date >= '$lastdate'"); 
$this->db->order_by('date', 'ase'); 

$query = $this->db->get('stats'); 

$data = array(); 

foreach($query-> result_array() as $row) 
{ 
$data[] = $row; 
}  

return $data; 

} 

在您的情况下限制返回最后30行。它与日期无关,除非您每天只添加一行。

尝试用mysql Between

SELECT DATE_FORMAT(create_date, '%m/%d/%Y') 
FROM mytable 
WHERE create_date BETWEEN SYSDATE() - INTERVAL 30 DAY AND SYSDATE() 
ORDER BY create_date ASC 

来源 - https://*.com/a/2041619/337055

+0

我会试试这个,谢谢 – 2012-03-18 16:32:16

+0

是否需要放DATE_FORMAT? – 2012-03-18 19:35:28