我需要一些有关 SQL(特别是:SQLite)相关问题的帮助。我有一张桌子'假期'
CREATE TABLE vacation(
name TEXT,
to_date TEXT,
from_date TEXT
);
我存储日期(YYYY-MM-DD)的地方,当有人离开度假并再次回来时。现在,我想获得一份所有日期的独特列表,其中有人正在度假。假设我的表如下所示:
+------------+-------------+------------+
| name | to_date | from_date |
+------------+-------------+------------+
| Peter | 2013-07-01 | 2013-07-10 |
| Paul | 2013-06-30 | 2013-07-05 |
| Simon | 2013-05-10 | 2013-05-15 |
+------------+-------------+------------+
查询的结果应如下所示:
+------------------------------+
| dates_people_are_on_vacation |
+------------------------------+
| 2013-05-10 |
| 2013-05-11 |
| 2013-05-13 |
| 2013-05-14 |
| 2013-05-15 |
| 2013-06-30 |
| 2013-07-01 |
| 2013-07-02 |
| 2013-07-03 |
| 2013-07-04 |
| 2013-07-05 |
| 2013-07-06 |
| 2013-07-07 |
| 2013-07-08 |
| 2013-07-09 |
| 2013-07-10 |
+------------------------------+
我考虑过使用日期表'all_dates'
CREATE TABLES all_dates(
date_entry TEXT
);
它涵盖了 20 年的时间跨度(2010-01-01 到 2030-01-01)和以下查询:
SELECT date_entry FROM all_dates WHERE date_entry BETWEEN (SELECT from_date FROM vacation) AND (SELECT to_date FROM vacation);
但是,如果我在上面的数据集上应用这个查询,我只会得到我想要的结果的一小部分:
+------------------------------+
| dates_people_are_on_vacation |
+------------------------------+
| 2013-07-01 |
| 2013-07-02 |
| 2013-07-03 |
| 2013-07-04 |
| 2013-07-05 |
| 2013-07-06 |
| 2013-07-07 |
| 2013-07-08 |
| 2013-07-09 |
| 2013-07-10 |
+------------------------------+
可以用 SQLite 完成吗?或者更好的是,如果我只返回“to_date”和“from_date”列并在我的 Python 应用程序中填补这些日期之间的空白?
任何帮助表示赞赏!