首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与php中的天数相比,每周的隐蔽天数

问与php中的天数相比,每周的隐蔽天数
EN

Stack Overflow用户
提问于 2014-01-02 06:36:31
回答 1查看 310关注 0票数 2

我有一个过滤器,它从我的数据库中获取数据,在数据过滤库中查找两个日期之间的数据。例如,from = 2013-12-15,to = 2013-12-20等,并将找到所需数据的日期返回给我。

现在我想,如果用户选择的日期大于20天,比如从日期筛选中选择的25天,或者超过1个月,可以导致最多5个月,那么它应该转换成周格式,并返回数据的周基,并显示我的数据与周数。

代码语言:javascript
复制
<?php $date_from = 2012-12-01; $to_date = 2013-12-31;  ?>

就像上面一样,我有一个月或四个星期的时间。现在我想显示每周的数据,因为我在以上两个日期之间有超过20天的差异。

我是应用在谷歌地区图表。现在我想以星期为单位来显示数据,而不是以单一的日期为基础。

我需要php,mysql的解决方案。

我的代码

--这是我的控制器函数,它获取post日期值

代码语言:javascript
复制
public function get_sales_graph(){

      if($this->input->post()){

        $type = $this->input->post('type');  
        $get_date = str_replace("/", "-", $this->input->post('chosen_from_date'));
        $get_date = DateTime::createFromFormat('m-d-Y', $get_date);
        $from_date = $get_date->format('Y-m-d');

        $get_to_date = str_replace("/", "-", $this->input->post('chosen_to_date'));
        $get_to_date = DateTime::createFromFormat('m-d-Y', $get_to_date);
        $to_date = $get_to_date->format('Y-m-d');

        $date1 = new DateTime($from_date);
        $date2 = new DateTime($to_date);
        $interval = $date1->diff($date2);
        $day_count = $interval->format('%a');
      }

        $user_id = $this->user->id;
        $rows['graph'] = $this->events_model->my_promo_graph_model($from_date, $to_date, $user_id);            
        $result = count($rows['graph']);
        $data['data'] = array();
        if($result > 0){

            array_push($data['data'], array('DATE', 'Sales'));
               foreach($rows['graph'] as $row){
                    array_push($data['data'], array($row['date_display'], (int)$row['ticketss_sold_on_date'])); 
               } 

        }
        else{
            $i = 1;
            $day_count = $day_count == 0 ? 1 : $day_count;
            array_push($data['data'], array('DATE', 'Sales'));
            while($i <= $day_count){
                array_push($data['data'], array(date('Y-m-'.$i), 0 ));
                $i++;
            }

        }


       echo json_encode($data);          
  }

,这是我的模型

代码语言:javascript
复制
public function my_promo_graph_model($from_date, $to_date, $user_id){

        $this->db->select('DATE(tickets_sold.date) AS date_display,
                          SUM(tickets_sold.quantity) AS ticketss_sold_on_date,
                          SUM(tickets_sold.quantity*tickets_sold.price) AS money_earned');

        $this->db->join('tickets_sold', 'tickets_sold.event_date_id = my_promos.event_id');
        $this->db->where('my_promos.user_id', $user_id);
        $this->db->where('DATE(tickets_sold.date) >=', $from_date);
        $this->db->where('DATE(tickets_sold.date) <=', $to_date);
        $this->db->group_by('date_display');
        $query = $this->db->get('my_promos');
        return $query->result_array();
    }
EN

回答 1

Stack Overflow用户

发布于 2014-01-30 10:02:46

在查询之前检查PHP中的日期范围,然后按照评论中的链接要求MySQL按周而不是按日分组。在你要求的时候:

代码语言:javascript
复制
$this->db->group_by('date_display');

尝试:

代码语言:javascript
复制
$this->db->group_by('YEARWEEK(date_display, 3)');

您想要的哪个周模式可能与此不同。使用YEARWEEK而不是仅仅一周就意味着您可以安全地根据它进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20877623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档