具有特定日期的行数

yhuiod9q  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(509)

有一个sql查询,显示在数据库中为某个日期创建的行数(我按日期创建直方图)。

$timemoscow = date("d.m.Y", time());
$todaycount = mysqli_query($link, "select count(*) FROM logs WHERE time LIKE '%".$timemoscow."%'") or die(mysqli_error($link));
$todaycountres = mysqli_fetch_row($todaycount);

直方图脚本如下所示。

$('#sparklinedash').sparkline([4, 5, 2, 4, 3, 6, 7], {
      type: 'bar',
      height: '30',
      barWidth: '4',
      resize: true,
      barSpacing: '5',
      barColor: '#7ace4c'
});

直方图中的条带将为7条。就是7天。我试图从数据库中推断出昨天、前天等几天的行数。但是如果我按照我的想法去做,我的代码看起来会非常棒。

$oneDay = date ("d.m.Y", strtotime ($timemoscow ."-1 days"));
$oneDaycount = mysqli_query($link, "select count(*) FROM logs WHERE time LIKE '%".$oneDay."%'") or die(mysqli_error($link));
$oneDaycountres = mysqli_fetch_row($oneDaycount);

$secondDay = date ("d.m.Y", strtotime ($timemoscow ."-2 days")); //and another days...

以js表示的近似输出:

$('#sparklinedash').sparkline([7, 6, 5, 4, 3, <?php echo $secondDaycountres[0]; ?>, <?php echo $oneDaycountres[0]; ?>], {
      type: 'bar',
      height: '30',
      barWidth: '4',
      resize: true,
      barSpacing: '5',
      barColor: '#7ace4c'
});

会有太多的请求,因为这样的柱状图3张7天。如何做到更合理、更紧凑?
提前感谢您的合作。

kokeuurv

kokeuurv1#

您需要使用聚合。。
像这样的

select time, count(*) from logs group by time

它将给你乘以每行的时间和相同值的行数。
看到了吗https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_count

izj3ouym

izj3ouym2#

select time, count(*) from rcc_logs group by STR_TO_DATE(time, '%d.%m.%Y')

这个很好用。谢谢。

bvjveswy

bvjveswy3#

你必须按日期分组

select DATE(time), count(*) FROM logs GROUP BY DATE(time)

相关问题