按年,月,周和日分组数据

时间:2019-10-03 03:18:25

标签: php mysql

我有一个带有销售记录的MySQL数据库,我要做的就是生成一个JSON,该JSON显示最旧的日期和最近的日期之间的所有日期,然后按年,月,周和日对信息进行分组,每天都会显示一个数字(代表当天的销售数量),如果没有与该日期匹配的数据,则该数字应为0。

我实际上正在使用PHP解决此问题。我尝试了很多解决方案,但是似乎都没有用。

以下是我的查询的屏幕截图,该查询已在PHPMyAdmin上执行:https://prnt.sc/pe4twq

最终的JSON应该是这样的:

[ 
   { 
      "year":"2019",
      "months":{ 
         "January":{ 
            "week 1":{ 
               "day 3":{ 
                  "total":"3400"
               }
            }
         }
      }
   }
]

编辑:这是我尝试过的一些代码


foreach ($rows as $row):
        $date = $row['date'];
        $dates[] = $date;

        $first = reset($dates);
        $first = strtotime($first);

        $last = end($dates);
        $last = strtotime($last);

        $year = date('Y', strtotime($date));

        $years[] = $year;
    endforeach;

    //86400 = 24 hours
    for($i = $first; $i <= $last; $i+=86400) {

        $dt = date('Y-m-d', $i);

        $y = date('Y', strtotime($dt));
        $m = date('n', strtotime($dt));
        $w = date('W', strtotime($dt));
        $d = date('D', strtotime($dt));

        $allYears[] = $y;

        if (in_array($dt, $dates)) {
            $result[] = ['year' => $y, 'month' => $meses[$m], 'week' => $w, 'day' => $dias[$d], 'total'=>$row["total"]];
        } else {
            $result[] = ['year' => $y, 'month' => $meses[$m], 'week' => $w, 'day' => $dias[$d], 'total'=>"0"];
        }


    }



    echo json_encode($result);

我在这里要做的是在数据库中生成第一年和最后一年之间的所有日期,然后将总计分配给每个日期,并为每年的每个日期生成一个JSON对象:http://prntscr.com/pe4yjj

0 个答案:

没有答案