gpt4 book ai didi

php - 从查询中获取所有月份,包括零计数

转载 作者:行者123 更新时间:2023-11-29 09:56:07 26 4
gpt4 key购买 nike

我现在有这个查询:

SELECT DATE_FORMAT(`dataNl`, \'%Y%m\') AS `Ym`, COUNT(*) AS `totale`
FROM `noleggio`
GROUP BY `Ym`

这有助于获取每个月的数据,但是如果某个月的值为0,则数据库中不存在该数据,所以我无法获取它。我需要一个查询,添加剩余月份,将 COUNT 字段设置为 0

我编写了一个PHP代码来将0值的月份添加到数组中,但它仅在年份只有一年的情况下才有效,如果我想获得更多,这需要很多棘手的代码,我认为可能有一个使用 SQL 解决方案。

这是 PHP 代码:

$t = array();
$m = array();
foreach ($months as $val) {
$t[] = $val['totale'];
$m[] = $val['Ym'];
}

for ($i = 0; $i < 12; ++$i) {
if (in_array($i + 201801, $m) == false) {
array_splice($t, $i, 0, 0);
}
}

最佳答案

这是一个 PHP 解决方案,需要数据库中的最小和最大日期:

// use the query SELECT MIN(dataNl), MAX(dataNl) FROM ... to
// find the first and last date in your data and use them below
$dates = new DatePeriod(
DateTime::createFromFormat('Y-m-d|', '2018-01-15')->modify('first day of this month'),
new DateInterval('P1M'),
DateTime::createFromFormat('Y-m-d|', '2018-12-15')->modify('first day of next month')
);

// assuming $rows contain the result of the GROUP BY query...
foreach ($dates as $date) {
$datestr = $date->format('Ym');
$index = array_search($datestr, array_column($rows, 'Ym'));
if ($index === false) {
echo $datestr . ' -> 0' . PHP_EOL;
} else {
echo $datestr . ' -> ' . $months[$index]['totale'] . PHP_EOL;
}
}

关于php - 从查询中获取所有月份,包括零计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53811246/

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