我需要帮助解决一个与 SQL(特别是:SQLite)相关的问题。我有一个名为“vacation”的表格。
我存储离开和回来的日期(YYYY-MM-DD),当有人去度假时。现在,我想获得所有度假期间某人在场的日期的独特列表。假设我的表如下:
查询结果应该是这样的:
我考虑使用一个日期表 - 'all_dates'。
它涵盖了2010年1月1日至2030年1月1日的20年时间跨度和以下查询:
然而,如果我在上述数据集上应用此查询,我只能得到我所需结果的一小部分:
它可以用SQLite完成吗?还是最好只返回“to_date”和“from_date”列,并在我的Python应用程序中填充这些日期之间的空白?任何帮助都将不胜感激!
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
);
它涵盖了2010年1月1日至2030年1月1日的20年时间跨度和以下查询:
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应用程序中填充这些日期之间的空白?任何帮助都将不胜感激!