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的日期与时间函数技巧
Apr 24 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php自定义函数截取汉字长度
May 15 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
PHP生成条形码大揭秘
Sep 24 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
php实现的http请求封装示例
Nov 08 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
通过代码实例解析PHP session工作原理
Dec 11 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中static和const关键字用法分析
2016/12/07 PHP
学习ExtJS table布局
2009/10/08 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Python numpy 常用函数总结
2017/12/07 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
python中wx模块的具体使用方法
2020/05/15 Python
Python 创建守护进程的示例
2020/09/29 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
new修饰符是起什么作用
2015/06/28 面试题
青年创业培训欢迎词
2014/01/10 职场文书
给领导的致歉信范文
2014/01/13 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2015大学迎新标语
2015/07/16 职场文书
保险公司增员口号
2015/12/25 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
python函数的两种嵌套方法使用
2022/04/02 Python