检索日期之间的数据:填充空记录
在 MySQL 中,选择指定日期范围内的数据通常是使用 BETWEEN 运算符来实现的。然而,这种方法可能会导致缺少没有数据的日期。为了解决这个问题,采用了涉及“日历表”的技术。
日历表的概念是创建一个包含所需范围内的日期序列的表。这是使用以下代码实现的:
CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
此表提供从 0 到 9 的数字范围。为了生成日历表,我们将整数与其自身多次连接以创建日期间隔列表:
SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i
结果是一个表格,其中包含从“2009-06-25”到“2009-06-25”的日期序列'2009-07-04'。为了检索数据,我们将日历表与原始表左连接:
SELECT cal.date, tbl.data FROM ( SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date FROM ints a JOIN ints b ORDER BY a.i * 10 + b.i ) cal LEFT JOIN tbl ON cal.date = tbl.date WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
此查询返回“2009-06-25”和“2009-07-01”之间所有日期的数据,包括没有数据但填充有“0”的行。
以上是如何填充 MySQL 数据检索中的缺失日期?的详细内容。更多信息请关注PHP中文网其他相关文章!