2014-10-02 3 views
1

임 자료/codeignighter에서 내 데이터를 그룹화하려고하면 DAY 보고서 당 주문 수를 계산할 수 있습니다.codebitighter with groupby

필드는 PHP - time()을 사용하여 INT(11)을 사용하는 INT(11)입니다. created 필드가 있지만 아직 사용하지 않았습니다.

이 데이터베이스는이

처럼 보이는 내가 여러 기록을 얻을 아래에 내 코드를 사용하는 경우

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.... 

을 (데이터가 단지 샘플과 만든 날짜와 일치 나던 ORDER_DATE가 있습니다) 같은 날에 나는 그것이 두 번째 시간과 정확하게 일치한다고 생각하기 때문에. 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 필드 유형은 무엇입니까 –

+0

그것의 타임 스탬프 – user3860921

답변

0

다음과 같이해야한다고 생각합니다.

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

위의 코드 블록에서 내가 언급하고 싶은 내용을 알고 있다고 생각합니다.

죄송합니다.

0

datetime이 아닌 요일별로 그룹을 지정해야합니다. 나는이 내용은 2014년 10월 2일 2 개 주문을 포함하여, 날짜 2014년 10월 1일, 2014년 10월 2일를 반환합니다

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

에 의해 그룹을 변경합니다.

시간별로 그룹화하면 주문이 같은 날이 아닌 하루에 정확히 같은 시간에 발생했기를 기대할 수 있습니다.