您好,登錄后才能下訂單哦!
使用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; }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。