SQLite: Obtener todas las fechas entre las fechas
Necesito ayuda con un problema relacionado con SQL (en particular: SQLite). Tengo una mesa 'vacaciones'
CREATE TABLE vacation(
name TEXT,
to_date TEXT,
from_date TEXT
);
donde guardo la fecha (YYYY-MM-DD), cuando alguien se va de vacaciones y regresa de nuevo. Ahora, me gustaría obtener una lista distintiva de todas las fechas, donde alguien está de vacaciones. Asumamos que mi mesa se ve como:
+------------+-------------+------------+
| 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 |
+------------+-------------+------------+
El resultado de la consulta debe verse como:
+------------------------------+
| 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 |
+------------------------------+
Pensé en usar una fecha - tabla 'all_dates'
CREATE TABLES all_dates(
date_entry TEXT
);
que cubre un período de tiempo de 20 años (2010-01-01 a 2030-01-01) y la siguiente consulta:
SELECT date_entry FROM all_dates WHERE date_entry BETWEEN (SELECT from_date FROM vacation) AND (SELECT to_date FROM vacation);
Sin embargo, si aplico esta consulta en el conjunto de datos anterior, solo obtengo una fracción del resultado deseado:
+------------------------------+
| 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 |
+------------------------------+
¿Se puede hacer con SQLite? ¿O es mejor si devuelvo las columnas 'to_date' y 'from_date' y lleno los espacios entre estas fechas en mi aplicación de Python?
Cualquier ayuda es apreciada!