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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
探讨php中header的用法详解
Jun 07 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
php魔术变量用法实例详解
Nov 13 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
浅谈如何提高PHP代码的质量
May 28 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维护文件系统
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
PHP5.3新特性小结
2016/02/14 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
完善的jquery处理机制
2016/02/21 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
js实现下一页页码效果
2017/03/07 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
python读取Kafka实例
2019/12/23 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
函授教育个人学习的自我评价
2013/12/31 职场文书
2014年工商所工作总结
2014/12/09 职场文书