首页 文章

计算日期范围内的天数总计

提问于
浏览
2

对于任何给定的(用户选择的)日期范围,StartDate(sDate)到EndDate(eDate),我想计算所有星期一,星期二等的总计 . 我当前的查询显示了范围内的所有日期,我希望每天都将我的表“计数”视为“计数”,但是将每周的每一天显示为一次 . 使用图像样本,我希望我的结果是:星期一 - 164星期二 - 139星期三 - 261等 .

SQL

SELECT areaname,created, SUM(count) as totals FROM reports WHERE created 
between '".$sDate."'  AND  '".$eDate."' AND area = '".$tArea."' GROUP BY areaname, 
created ORDER BY id ASC

HTML

foreach ($counts as $row) { ?>
<tr><td><?php echo date('l',strtotime($row['reports']['created'])); ?></td>
<?php echo $row[0]['totals']; ?>
}

sum of count for days within date range

1 回答

  • 1

    您可以使用DATE_FORMAT()函数从给定日期获取星期几,然后您可以按此分组 . 语法是 DATE_FORMAT(date, '%W') . 所以:

    SELECT areaname,
      DATE_FORMAT(created, '%W') AS weekday,
      SUM(count) AS totals
    FROM reports
    WHERE created BETWEEN '".$sDate."' AND '".$eDate."'
      AND area = '".$tArea."'
    GROUP BY areaname, weekday
    ORDER BY id
    

    请注意,我在GROUP BY中留在 areaname 中,因此这将为 areaname / weekday 的每个组合返回一个结果 . 如果您想要所有areanames的总计,只需从GROUP BY子句中删除 areaname 即可 .

相关问题