2013-07-09 83 views
3

我需要一些幫助與SQL(特別是:SQLite)相關的問題。我有一個表「假期」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應用程序中這些日期之間的差距?

任何幫助表示讚賞!

回答

4

你可以試試:

SELECT date_entry 
FROM vacation 
JOIN all_dates ON date_entry BETWEEN from_date AND to_date 
GROUP BY date_entry 
ORDER BY date_entry 
+0

的作品就像一個魅力,非常感謝! – user2494129

相關問題