我想在以下查询中按 date1 和 date2 之间的每一分钟进行分组。还应显示 0 值。所以应该显示日期之间的每一分钟。问题是表中不存在这些日期。
SELECT
click.date as 'date',
COUNT(*)
FROM click
INNER JOIN short_url surl ON click.short_url_id = surl.id
INNER JOIN article_surl ON article_surl.article_id = 3
WHERE click.date BETWEEN (?Date1:'2011-04-24 13:33:00') AND (?Date2:'2011-04-24 15:33:00')
GROUP BY DATE_FORMAT(click.date, '%Y-%m-%d %H:%i:00');
我认为唯一的方法是制作一个临时表?这对性能有何影响?加入日期也不是很好,因为 click.date 在日期时间中也可能有毫秒。那么应该使用 DateFormat 吗? 也许在我的应用程序逻辑中这样做更好,读取数组并用 0 值填充缺失的日期。
最佳答案
我认为您在应用程序逻辑中填充缺失值的建议是避免创建临时表的最佳选择,尤其是在您无论如何都要处理数组的情况下。我们在我们编写的一些服务中做同样的事情。
关于mysql - 如何在时间范围内按分钟分组并在 MySQL 中显示 0 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828875/