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 相关文章推荐
关于BIG5-HKSCS的解决方法
Mar 20 PHP
php一些公用函数的集合
Mar 27 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
PHP中session变量的销毁
Feb 27 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
PHP网页缓存技术优点及代码实例
Jul 29 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实现网站留言板功能
2015/11/04 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
发现的以前不知道的函数
2006/09/19 Javascript
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
关于vue面试题汇总
2018/03/20 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
python的re模块应用实例
2014/09/26 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
python next()和iter()函数原理解析
2020/02/07 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
幼儿评语大全
2014/04/30 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
专家推荐信范文
2015/03/26 职场文书
公司内部升职自荐信
2015/03/27 职场文书
具结保证书范本
2015/05/11 职场文书