我有以下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
它返回日期以及这一天有多少人访问了游戏,但是当今天没有行时如何返回0?
例如,数据库中不存在1993年12月15日,但是用户选择日期介于15.10.1950和12.15.2020之间。
我想返回这个不存在的日期1993年12月15日,但计数为0。这甚至可能吗?
感谢帮助,
菲利普
我通过以下链接使用RedFilter Answer解决了我的问题:从日期范围生成天数
我的查询现在看起来像这样:
select DATE_FORMAT(a.Date,'%d.%m. %Y'), COUNT(stat.IdStat)
from (
select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) as a LEFT JOIN stat ON a.Date = stat.date
where a.Date between ? and ? AND (stat.IdGame = ? OR stat.IdGame IS NULL) GROUP BY a.Date
但是我需要从数据选择器中删除将来的日期,因为当我在此sql中使用未来日期时,将不会返回任何数据...我需要设置数据选择器的最小值和最大值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句