开发者社区 问答 正文

MySQL:选择两个日期之间的所有数据

我有一个与数据连接到日期的mysql表。每行都有数据和日期,如下所示:

2009-06-25 75 2009-07-01 100 2009-07-02 120 我有一个mysql查询,它选择两个日期之间的所有数据。这是查询:

SELECT data FROM tbl WHERE date BETWEEN date1 AND date2

我的问题是,即使一天没有数据,我也需要获取date1和date2之间的行。

因此,我的查询将错过在2009-06-25和2009-07-01之间为空的日期。

我可以以某种方式添加这些仅包含0的日期作为数据吗?

展开
收起
保持可爱mmm 2020-05-10 21:49:22 454 分享 版权
1 条回答
写回答
取消 提交回答
  • 您可以使用经常被称为“日历表”的概念。这是有关如何在MySql中创建日历表的良好指南:

    -- create some infrastructure CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

    -- only works for 100 days, add more ints joins for more 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'; 您可能要创建表cal而不是子选择。来源:stack overflow

    2020-05-10 21:49:33
    赞同 展开评论