laravel定时脚本(laravel实现按时间日期进行分组统计方法示例)
类别:编程学习 浏览量:2697
时间:2022-04-02 01:39:07 laravel定时脚本
laravel实现按时间日期进行分组统计方法示例按日期进行分组
|
//统计七天内注册用户数量按天进行分组 $user = DB::table( 'users' )->whereBetween( 'created_at' ,[ '2018-01-01' , '2018-01-07' ]) ->selectRaw( 'date(created_at) as date,count(*) as value' ) ->groupBy( 'date' )->get(); #获取的用户分组数据 { "date" : "2018-01-01" , #日期 "value" : 199 #数量 { "date" : "2018-01-02" , "value" : 298 }, { "date" : "2018-01-03" , "value" : 1000 } #在进行图表统计的时候直接从数据库取得数据有些日期可能是没有的,就需要我们手动进行补全一些日期 #计算日期内天数 $stimestamp = strtotime ( $start_time ); $etimestamp = strtotime ( $end_time ); #计算日期段内有多少天 $days = ( $etimestamp - $stimestamp ) / 86400; #保存每天日期 $date = array (); for ( $i = 0; $i < $days ; $i ++){ $date [] = date ( 'Y-m-d' , $stimestamp + (86400 * $i )); } #循环补全日期 foreach ( $date as $key => $val ){ $data [ $key ] = [ 'date' => $val , 'value' => 0 ]; foreach ( $user as $item => $value ){ if ( $val == $value [ 'date' ]){ $data [ $key ] = $value ; } } } return $data ; |
按月份进行分组
|
#统计一年内注册用户数量按月份进行分组 $user = DB::table( 'users' )->whereBetween( 'created_at' ,[ '2018-01-01' , '2018-12-31' ]) ->selectRaw( 'DATE_FORMAT(created_at,"%Y-%m") as date,COUNT(*) as value' ) ->groupBy( 'date' )->get(); #获取的用户分组数据 { "date" : "2018-01" , #月份 "value" : 1497 #数量 }, { "date" : "2018-02" , "value" : 2354 }, { "date" : "2018-03" , "value" : 4560 } #在进行图表统计的时候直接从数据库取得的数据有的月份可能是没有的,不过月份比较少可直接写死,同样也需要补全 $year = date ( 'Y' ,time()); #一年的月份 $month = [ 0 => $year . '-01' , 1 => $year . '-02' , 2 => $year . '-03' , 3 => $year . '-04' , 4 => $year . '-05' , 5 => $year . '-06' , 6 => $year . '-07' , 7 => $year . '-08' , 8 => $year . '-09' , 9 => $year . '-10' , 10 => $year . '-11' , 11 => $year . '-12' , ]; #循环补全月份 foreach ( $month as $key => $val ){ $data [ $key ] = [ 'date' => $val , 'value' => 0 ]; foreach ( $user as $item => $value ){ if ( $val == $value [ 'date' ]){ $data [ $key ] = $value ; } } } return $data ; |
laravel实现各时间段数量统计、方便直接使用
因项目中用到了图表之类的信息,需要获取到很多时间的数据动态,刚开始我都是自己换算时间来计算,后来 看到手册中有更简单的方法,自己总结了一下通用的时间段统计(今天、昨天、上周、本周、上月、本月、上年、本年)。
|
use Carbon\Carbon; public function getNumber() { $data = []; #今天数据 $data [ 'customer_today' ] = Customer::where( 'customer_type' , 1)->where( 'created_at' , Carbon::today())-> count (); #昨天数据 $data [ 'customer_yesterday' ] = Customer::where( 'customer_type' , 1)->where( 'created_at' , Carbon::yesterday())-> count (); // 本周数据 $this_week = [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()]; $data [ 'customer_this_week' ] = Customer::where( 'customer_type' , 1)->whereBetween( 'created_at' , $this_week )-> count (); // 上周数据 $last_week = [Carbon::now()->startOfWeek()->subWeek(), Carbon::now()->endOfWeek()->subWeek()]; $data [ 'customer_last_week' ] = Customer::where( 'customer_type' , 1)->whereBetween( 'created_at' , $last_week )-> count (); // 本月数据 $data [ 'customer_this_month' ] = Customer::where( 'customer_type' , 1)->whereMonth( 'created_at' , Carbon::now()->month)-> count (); // 上月数据 $data [ 'customer_last_month' ] = Customer::where( 'customer_type' , 1)->whereMonth( 'created_at' , Carbon::now()->subMonth()->month)-> count (); // 本年数据 $data [ 'customer_this_year' ] = Customer::where( 'customer_type' , 1)->whereYear( 'created_at' , Carbon::now()->year)-> count (); return $data ; } |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
您可能感兴趣
- python统计出现文字最多的词(使用Python 统计高频字数的方法)
- mysqlcount使用技巧(MySQL巧用sum、case和when优化统计查询)
- mysql统计函数详解(浅析MySQL的基数统计)
- laravel定时脚本(laravel实现按时间日期进行分组统计方法示例)
- laravel模型个数(laravel withCount 统计关联数量的方法)
- c#中使用stopwatch统计代码执行时间
- dedecms创建栏目(dedecms织梦模板栏目列表中添加统计文档数量的标签)
- python群聊提示(python-itchat 统计微信群、好友数量,及原始消息数据的实例)
- dede发布不了文章(dede中统计栏目文章数的2种实现方法)
- dedecms统计功能(DedeCMS sql 调用数字递增标签以及修改方法)
- laravel数据表配置(laravel实现按月或天或小时统计mysql数据的方法)
- mysql数值类型图解(详解mysql持久化统计信息)
- dede数据统计(DEDE [field:global name=autoindex/] 按序号排列从0从1开始)
- pandas列设置随机值(Pandas统计重复的列里面的值方法)
- dedecms如何更改文章发布时间(Dedecms实现自动统计当前栏目文档总数的方法)
- python中统计文本中单词数的代码(Linux上使用Python统计每天的键盘输入次数)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
- 今日菜价 红三鱼涨幅最高 4.41 ,黄鳝降幅最高 5.06(红三鱼涨幅最高)
- 今日菜价 西生菜涨幅最高 6.19 ,生菜降幅最高 5.38(西生菜涨幅最高)
- 今日菜价 青豆角涨幅最高 0.70 ,菜心降幅最高 5.55(青豆角涨幅最高)
热门推荐
- python控制流实例(如何用C代码给Python写扩展库Cython)
- docker主机路径与容器路径(Docker容器没有权限写入宿主机目录的解决方案)
- smarty模板的使用方法实例分析(smarty模板的使用方法实例分析)
- nginx安全配置提示(wdcp Linux面板nginx启用gzip后js未压缩解决方案)
- php脚本控制方法(php swoole多进程/多线程用法示例基于php7nts版)
- mysqlselect语句汇总(MySQL Select语句是如何执行的)
- dedecms栏目列表(dedecms子栏目中调用其顶级栏目名称和简介的方法)
- python零基础入门详细教程(Python零基础入门学习之输入与输出)
- 手机无法与服务器建立安全连接(ftp无法与服务器建立连接)
- php提供哪些函数来避免sql的注入(PHP与SQL语句写一句话木马总结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9