2014-10-02 54 views
1

我试图将我的数据在活动记录/ codeignighter中分组,以便能够计算每个DAY报告有多少个订单。Codeignighter与groupby问题

order_date字段是INT(11),它使用PHP - time()来填充它。 有一个created领域,但我havnt使用此尚未。

数据库看起来像这样

(注意数据只是样品和order_date的犯规匹配创建日期)当我使用我的代码下面,我得到了多个记录

id | order_date | order_total |created.... 
---+------------+-------------+---------- 
0 | 1411780207 | 12.50  |2014-10-01 00:12:23 .... 
1 | 1411750209 | 14.50  |2014-10-02 00:22:33.... 
1 | 1412780309 | 14.50  |2014-10-02 00:25:33.... 

因为我认为这也是按照时间精确到第二的时间。我如何只按日期D/M/Y分组?

public function get_orders($limit = 5, $date_start ='01/01/2001',$date_end='01/12/2001') 
{ 
    //first convert the date format 
    $date_start = strtotime($date_start); 
    $date_end = strtotime($date_end); 


    $this->db->select('order_date, count(*) as total_orders, sum(order_total) as orders_total'); 
    $this->db->where('order_date >=', $date_start); 
    $this->db->where('order_date <=', $date_end); 
    $this->db->order_by('order_date desc', FALSE); 
    $this->db->group_by('order_date'); 
    $this->db->limit($limit); 

    return $this->db->get('orders')->result(); 

} 
+0

什么是您用于order_date的db字段类型 – 2014-10-02 04:44:24

+0

它的时间戳 – user3860921 2014-10-06 00:58:12

回答

0

我认为你应该像下面那样做。

$secondOfDay = 86400; //second in a day 
$this->db->group_by("CEILING(order_date/{$secondOfDay})"); 

我认为你知道我想在上面的代码块中提到什么。

对不起,我的英语。

0

你需要按日计算而不是日期时间。我会通过向

$this->db->group_by(DATE_FORMAT('order_date', '%y-%m-%d')); 

这将只返回日期2014-10-01,2014年10月2日,含2个数量级2014年10月2日更改组。

按照时间分组,您预计订单将在同一天发生,而不是在同一天发生。