Si desea obtener la lista de días, con un SQL como
seleccione ...como los días en que se encuentra entre date
'2010-01-20' y '2010-01-24'
y devolver los datos como:
days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24
Esta solución utiliza ningún bucle, procedimientos o tablas temporales. La subconsulta genera fechas para los últimos mil días, y podría extenderse para ir tan atrás o adelante como lo desee.
select a.Date
from (
select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
where a.Date between '2010-01-20' and '2010-01-24'
Salida:
Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20
Notas sobre el rendimiento de
prueba a cabo here, el rendimiento es sorprendentemente bueno: la consulta anterior toma 0,0009 seg.
Si ampliamos la sub consulta para generar aprox. 100.000 números (y por lo tanto 274 años de fechas), se ejecuta en 0.0458 segundos.
Por cierto, esta es una técnica muy portátil que funciona con la mayoría de las bases de datos con ajustes menores.
No está claro lo que está preguntando. ¿Cuál es el problema que estás teniendo? ¿Está preguntando si puede consultar todas las tablas en todas las bases de datos o pregunta si puede consultar una tabla llamada "sistema"? El segundo ejemplo debería funcionar bien. El primer ejemplo no funcionará como crees, son dos piezas de texto, no fechas. Deberá guardar las fechas en un formato adecuado. – Tom
Creo que se refieren a consultas simples para obtener listas de fechas o números entre rangos determinados, sobre la marcha. – MartW
@Tom: supongo que está pidiendo 'generate_series'. – Quassnoi