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

标签 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 值填充缺失的日期。

最佳答案

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

关于mysql - 如何在时间范围内按分钟分组并在 MySQL 中显示 0 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828875/

相关文章:

php - 如何使用 php 从 mysql 中的单个表中获取所有数据?

MySQL 搜索查询,按最佳匹配对结果进行排序

c# - 条件表达式中的数据类型不匹配 | Access 、OleDb、C#

mysql - sql AND OR LIKE 运算符显示值

mysql - 数据库中的序列化 SQL

python - 来自 unix utc 秒的 numpy datetime64

datetime - 确定两个日期范围是否重叠

php - Mysql按参数复合录入(按日期)

mysql - 对多列进行 SQL 分组 - MySQL

sql - 使用可以为空的列测试不平等