Rai*_*r34 3 php mysql sql date
我有以下sql查询
SELECT DATE_FORMAT(date,'%d.%m. %y') as date, COUNT(idStat) as number
FROM stat
WHERE IdGame = ? AND date >= ? AND date <= ?
GROUP BY date
Run Code Online (Sandbox Code Playgroud)
它返回日期以及今天有多少人访问过游戏,但是当今天没有行时,如何返回0?
例如,db中不存在日期15.12.1993,但用户选择日期在15.10.1950和12.15.2020之间.
我想要返回这个不存在的日期15.12.1993,但计数为0.这是否可能?
感谢帮助,
菲利普.
最好的方法是有一个Calendar方便的相关日期表.然后,您可以使用a left join来获取日期.像这样的东西:
SELECT DATE_FORMAT(c.date,'%d.%m. %y') as date, COUNT(s.idStat) as number
FROM Calendar c LEFT JOIN
stat s
ON c.date = s.date AND s.IdGame = ?
WHERE c.date >= ? AND c.date <= ?
GROUP BY c.date;
Run Code Online (Sandbox Code Playgroud)
如果你在每个日期都有游戏,但问题是特定的游戏不是一天,你可以使用这个捷径:
SELECT DATE_FORMAT(date,'%d.%m. %y') as date, SUM(IdGame = ?) as number
FROM stat
WHERE date >= ? AND date <= ?
GROUP BY date;
Run Code Online (Sandbox Code Playgroud)
这并不适用于所有情况,但它可以是一个有用的捷径.