我试图将我的数据分组到活动记录/代码记录器中,以便能够计算每天报告的订单数量。
order_date
字段是INT(11)
,使用PHP - time()
填充它。
有一个created
字段,但我还没有使用它。
数据库看起来像这样
(请注意,数据只是示例,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 :(得分:0)
我认为你应该这样做。
$secondOfDay = 86400; //second in a day
$this->db->group_by("CEILING(order_date/{$secondOfDay})");
我认为您知道我想在上面的代码块中提到的内容。
抱歉我的英文。
答案 1 :(得分:0)
您需要在当天而不是日期时间进行分组。我会将小组改为
$this->db->group_by(DATE_FORMAT('order_date', '%y-%m-%d'));
这将仅返回2014-10-01,2014-10-02的日期,2014-10-02包含2个订单。
通过按时间分组,您预计订单会在一天而不是同一天的同一时间发生。