laravel实现按月或天或小时统计mysql数据的方法


Posted in PHP onOctober 09, 2019

在PHP里怎么比较简单的实现按时间(如按月,按天,按小时)来统计表里的数据呢?

如:要实现获取下图曲线图数据(ps:当然也可能是柱状图等,数据都是一样的),默认获取七天内的数据,点击今天,7天,15天,30天可任意切换,其中今天是按小时统计.

不过我的实现方法有一个小缺点,当某个小时内是没有数据的,那么该小时不会出现,不过这个应该可以通过前端的形式弥补

好了,废话不多说,上图上代码!

laravel实现按月或天或小时统计mysql数据的方法

1. 控制器内容

/**
   * [getsellerdata 获取某时间段内商户结算查询数据]
   * @param Request $request [description] start:起始时间 end:结束时间 
   * @return [type]      [description]
   */
  public function getsellerqudata(Request $request){
    $data = $this->dataanalysis->getSellerQuData($request->start,$request->end);
    return $data;    
  }

2. 库文件内容

/**
   * [getSellerQuData 获取商户结算数据 曲线]
   * @param [string] $start [起始时间]2017-08
   * @param [string] $end  [结束时间]
   * @return [type]    [description]
   */
  public function getSellerQuData($name,$start,$end){

    //计算时间差值,以决定格式化时间格式
    $diff = strtotime($end)-strtotime($start);

    //分组条件 1天内按小时分组,否则按天/月分组
    //86400/1天 2678400/1月
    if($diff<86400&&$diff>0){
      $sort = '%H';
    }elseif($diff<2678400){
      $sort = '%Y-%m-%d';
    }else{
      $sort = '%Y-%m';
    }
    //把数据添加时间按格式化时间分组求和,求和分两种,一种是直接求和,一种是满足case when条件的数据求和
    $query = DB::table('user_withdrawals as w')->select(DB::raw("FROM_UNIXTIME(created_at,'{$sort}') as thedata,sum(case when w.cash_type = 1 then w.money end) as xiabi,sum(case when w.cash_type = 2 then w.money end) as online,sum(w.money) as alls"))->groupBy(DB::raw("FROM_UNIXTIME(created_at,'{$sort}')"));

    //条件筛选 某时间段内
    if( !empty($start) ){
      $query->whereRaw('w.created_at >= ?',strtotime($start));
    }
    if( !empty($end) ){
      $query->whereRaw('w.created_at <= ?',strtotime($end));
    }

    $data = $query->get();

    return $data;
  }

以上这篇laravel实现按月或天或小时统计mysql数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP与SQL注入攻击[二]
Apr 17 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
ThinkPHP之getField详解
Jun 20 PHP
php如何连接sql server
Oct 16 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
php 常用的系统函数
Feb 07 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
调试php程序的简单步骤
Oct 04 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 #PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 #PHP
Laravel统计一段时间间隔的数据方法
Oct 09 #PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 #PHP
laravel按天、按小时,查询数据的实例
Oct 09 #PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 #PHP
Laravel find in set排序实例
Oct 09 #PHP
You might like
全面了解PHP中的全局变量
2016/06/17 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python实现简单的学生管理系统
2021/02/22 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
公司财务总监岗位职责
2013/12/14 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
《雾凇》教学反思
2014/02/17 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
求职简历自我评价范文
2015/03/10 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
职工宿舍管理制度
2015/08/05 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle