如何在时间范围内按分钟分组并在MySQL中显示0值?

时间:2011-04-29 06:52:15

标签: mysql sql datetime

我希望在以下查询中的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值填充缺少的日期。

2 个答案:

答案 0 :(得分:2)

我认为你在应用逻辑中填写缺失值的建议是避免创建临时表的最佳选择,特别是如果你要处理数组的话。我们在一些服务中也做了同样的事情。

答案 1 :(得分:1)

要按分钟分组,您可以使用此子句 -

...
GROUP BY DAYOFYEAR(click.date), (60 * HOUR(click.date) + MINUTE(click.date))