Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php groupby的代码点火器问题_Php_Sql_Codeigniter_Activerecord - Fatal编程技术网

Php groupby的代码点火器问题

Php groupby的代码点火器问题,php,sql,codeigniter,activerecord,Php,Sql,Codeigniter,Activerecord,我试图将我的数据分组到active record/codeignighter中,以便能够获得每天多少订单的计数报告 order\u date字段是一个INT(11)字段,它使用PHP-time()。 创建了一个字段,但我还没有使用它 数据库如下所示 (请注意,数据只是示例,订单日期与创建日期不匹配) 当我使用下面的代码时,我得到了同一天的多个记录,因为我认为它也是按精确到秒的时间分组的。我如何仅按日期D/M/Y分组 public function get_orders($limit = 5, $

我试图将我的数据分组到active record/codeignighter中,以便能够获得每天多少订单的计数报告

order\u date
字段是一个
INT(11)
字段,它使用
PHP-time()。
创建了一个
字段,但我还没有使用它

数据库如下所示

(请注意,数据只是示例,订单日期与创建日期不匹配)

当我使用下面的代码时,我得到了同一天的多个记录,因为我认为它也是按精确到秒的时间分组的。我如何仅按日期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();

}  
public函数获取订单($limit=5,$date\u start='01/01/2001',$date\u end='01/12/2001'))
{
//首先转换日期格式
$date\u start=strottime($date\u start);
$date\u end=strottime($date\u end);
$this->db->select('order_date,count(*)作为订单总数,sum(order_total)作为订单总数);
$this->db->where('order\u date>=',$date\u start);

$this->db->where('order\u date我认为您应该像下面这样做

$secondOfDay = 86400; //second in a day
$this->db->group_by("CEILING(order_date/{$secondOfDay})");
我想你知道我想在上面的代码块中提到什么


对不起,我的英语不好。

你需要按天分组,而不是按日期时间。我会将分组改为

$this->db->group_by(DATE_FORMAT('order_date', '%y-%m-%d'));
这将只返回日期2014-10-01、2014-10-02,其中2014-10-02包含2个订单


通过按时间分组,您希望订单发生在一天中的同一时间,而不是同一天。

您用于订单日期的db字段类型是什么
$this->db->group_by(DATE_FORMAT('order_date', '%y-%m-%d'));