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小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
解决MySQL中文输出变成问号的问题
Jun 05 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
php文件包含的几种方式总结
Sep 19 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python调用java的jar包方法
2018/12/15 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
保安拾金不昧表扬信
2014/01/15 职场文书
红旗渠导游词
2015/02/09 职场文书
四大名著读书笔记
2015/06/25 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
python playwright 自动等待和断言详解
2021/11/27 Python