sql >> データベース >  >> RDS >> Mysql

Laravel-データベースから不足している日付とカウントを埋めます

    このソリューションは私にとってうまくいきました。最初に、日付をキーとして設定し、カウント値を0に設定して、時間範囲内のすべての日付を含む配列を作成し、次にDBでのクエリ後の値を、同じ配列のカウントで置き換えました。クエリからの値:

    $period = new DatePeriod( new DateTime($from), new DateInterval('P1D'), new DateTime($to));
          $dbData = [];
    
          foreach($period as $date){
              $range[$date->format("Y-m-d")] = 0;
          }
    
          $data = DB::table($request['option'])
                    ->select(DB::raw('DATE(created_at) as time'), DB::raw('count(*) as count'))
                    ->whereDate('created_at', '>=', date($from).' 00:00:00')
                    ->whereDate('created_at', '<=', date($to).' 00:00:00')
                    ->groupBy('time')
                    ->get();
    
          foreach($data as $val){
            $dbData[$val->time] = $val->count;
          }
    
          $data = array_replace($range, $dbData);
        }
    
        return json_encode($data);
    


    1. MySQLで過去1時間のデータを取得する方法

    2. WHERE col LIKE'%'にNULL値を選択させることはできますか?

    3. ORACLEのTimeStamp列から時間部分を抽出します

    4. ファイル内のpgsqlコマンドを実行するためのシェルスクリプト