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



我想在下面的查询中按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');

我认为唯一的方法是做一个临时表?这对性能有什么影响?日期上的连接也不是很好,因为点击。Date在datetime中也可以有毫秒。所以应该使用DateFormat ?也许在我的应用程序逻辑中这样做更好,读取数组并用0值填充缺失的日期。

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

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

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

相关内容

  • 没有找到相关文章

最新更新