旨在每月输出一串总计的 SQL 查询正在输出 13 个值(第 0 个月?)
我需要在代码中添加什么才能从第 1 个月(一月)而不是第 0 个月开始计数?
<?php
$sql = "SELECT MONTH(SightingDate) AS month, COUNT(CASE WHEN SpeciesName = 'Choreutis pariana' and Notes LIKE '%Adult%' THEN 1 END) cnt
FROM GAINLP
GROUP BY MONTH(SightingDate);";
if ($result3=mysqli_query($connect,$sql)) {
while($row=$result3->fetch_assoc()) {
echo $row['cnt'] . ',';
}
}
?>
数据库包含 8 月份的一条记录。我期待 (0,0,0,0,0,0,0,1,0,0,0,0) < 12 个逗号分隔值的结果。
相反,上面的代码输出 (0,0,0,0,0,0,0,0,0,1,0,0,0) <13 CSV
最佳答案
这可能是因为数据库中的某些行具有无效或 NULL
SightingDate
值,因此 MONTH(SightingDate)
为返回 0
或 NULL
,从而在输出中提供 13 行(1 到 12 表示 1 月到 12 月加上 0/NULL)。您可以运行此查询来查找错误日期:
SELECT * FROM GAINLP WHERE MONTH(SightingDate) NOT BETWEEN 1 AND 12
关于php - 按月计数返回包含 13 个值的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56095618/