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 相关文章推荐
提取HTML标签
Oct 09 PHP
discuz安全提问算法
Jun 06 PHP
PHP常用函数小技巧
Sep 11 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
PHP分页类集锦
Nov 18 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
php测试kafka项目示例
Feb 06 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实现的QQ空间g_tk加密算法
2015/07/09 PHP
php无限级分类实现方法分析
2016/10/19 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python tkinter label 更新方法
2018/10/11 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
中学生国旗下讲话稿
2014/04/26 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
教师自荐信范文
2015/03/06 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python