在 SQL 结果中填充空日期
查询 MySQL 以从表中导出日期和计数时,日期范围中的间隙可能会留下一些空白下落不明的日子。要使用零计数条目填补这些空白,一种简单的方法是利用服务器端存储过程。
使用存储过程的服务器端填充
以下存储过程创建一个临时表,其中包含指定范围内的所有可能日期。然后,该表与查询结果左连接,以填充缺失的日期。
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
此过程采用两个日期作为输入,并生成一个临时表 foo,其中包含它们之间的所有潜在日期。然后,它与原始查询执行左连接,以包含所有缺失的日期并返回完整的数据集。
客户端检查(可选)
此外,一个简单的检查可以在客户端(例如 Perl)实现,以处理当前日期不等于前一个日期加一天的情况。在这种情况下,可以将其他计数为零的字符串添加到输出中。
以上是如何用零计数填充 SQL 查询结果中的缺失日期?的详细内容。更多信息请关注PHP中文网其他相关文章!