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;
}
答
我终于发现实际的前一天给一个范围或数天,有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
+0
我会试试这个,谢谢 – 2012-03-18 16:32:16
+0
是否需要放DATE_FORMAT? – 2012-03-18 19:35:28
请参阅本页:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html – hjpotter92 2012-03-18 03:09:53
您的意思是使用'A SC'?它不是'ase' ...什么数据类型是'date'? – 2012-03-18 03:29:49
不,我的意思是ase,并且表中的日期类型只是DATE – 2012-03-18 03:46:42