2014-10-02 91 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日更改組。

按照時間分組,您預計訂單將在同一天發生,而不是在同一天發生。