SQLite: получить все даты между датами
Мне нужна помощь с проблемой, связанной с SQL (в частности: SQLite). У меня есть столик "каникулы"
CREATE TABLE vacation(
name TEXT,
to_date TEXT,
from_date TEXT
);
где я храню дату (ГГГГ-ММ-ДД), когда кто-то уходит в отпуск и возвращается снова. Теперь я хотел бы получить четкий список всех дат, когда кто-то в отпуске. Давайте предположим, что моя таблица выглядит так:
+------------+-------------+------------+
| 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?
Любая помощь приветствуется!