gpt4 book ai didi

PHP ARRAY 根据日期范围显示数组中的分组数据

转载 作者:行者123 更新时间:2023-11-29 00:49:21 25 4
gpt4 key购买 nike

我有这个问题

$query = mysql_query ("SELECT type, count(*), date FROM tracking WHERE htcode='$htG' AND type IN ('viewed', 'shared', 'printed', 'emailed', 'used') GROUP BY type, date ORDER BY date ASC");

这段代码:

while ($result = mysql_fetch_assoc($query)){
echo $result['date'] .' / ' .$result['type'].' = ' .$result['count(*)'];
echo '<br>';
}

给我:

2012-02-01 / viewed = 2
2012-02-03 / emailed = 1
2012-02-04 / shared = 1
2012-02-05 / viewed = 1
2012-02-07 / viewed = 2
2012-02-07 / shared = 3
2012-02-07 / emailed = 1
2012-02-07 / printed = 1

我如何获取查询数组并提取所有(查看、共享、通过电子邮件发送、打印、使用)今天、昨天和日期范围(例如过去 30 天)?

最佳答案

要获取特定日期范围内的所有结果,请不要按日期分组;而是使用 WHERE 子句来限制计数的日期。否则查询非常相似。

$query = mysql_query("SELECT type, count(*) FROM tracking WHERE htcode = '$htG' AND type IN ('viewed', 'shared', 'printed', 'emailed', 'used') AND date >= '$start_date' AND date <= '$end_date' GROUP BY type");

为了清楚起见,这里只是将查询本身格式化为多行:

SELECT type, count(*)
FROM tracking
WHERE htcode = '$htG'
AND type IN ('viewed', 'shared', 'printed', 'emailed', 'used')
AND date >= '$start_date' AND date <= '$end_date'
GROUP BY type

只需确保您首先设置了 $start_date$end_date 的值。例如,今天您只需将它们都设置为:

$start_date = date('Y-m-d');
$end_date = date('Y-m-d');

请注意,date('Y-m-d') 只是今天的日期,格式如 YYYY-MM-DD

对于昨天,您会将昨天的时间戳传递给 date()函数,但使用相同的格式:

$start_date = date('Y-m-d', strtotime('yesterday'));
$end_date = date('Y-m-d', strtotime('yesterday'));

对于过去的三十天,您将从 30 天前开始到今天结束:

$start_date = date('Y-m-d', strtotime('30 days ago'));
$end_date = date('Y-m-d');

您可以为任何开始/结束日期这样做。请注意,我使用的是 strtotime() ,它让您可以使用大量英语短语来指定时间戳,而不必进行日期计算。

此外,由于您将多次执行查询,因此将逻辑分离到它自己的函数中可能是有意义的:

function report_range($htG, $start_date, $end_date) {
$query = mysql_query("SELECT type, count(*) FROM tracking WHERE htcode = '$htG' AND type IN ('viewed', 'shared', 'printed', 'emailed', 'used') AND date >= '$start_date' AND date <= '$end_date' GROUP BY type");

while ($result = mysql_fetch_assoc($query)){
echo $start_date . '-' . $end_date . ' / ' . $result['type'] . ' = ' . $result['count(*)'];
echo '<br>';
}
}

然后用这样的东西运行它(在这个例子中是最后 30 天):

report_range($htG, date('Y-m-d', strtotime('30 days ago')), date('Y-m-d'));

关于PHP ARRAY 根据日期范围显示数组中的分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com