Wenn Sie die Liste der Tage zu bekommen, mit einem SQL wie
wählen ...als Tage, wo date
zwischen ‚2010-01-20‘ und ‚2010-01-24‘
Und geben Daten wie ist:
days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24
Diese Lösung verwendet keine Schleifen, Prozeduren oder temporäre Tabellen. Die Unterabfrage generiert Daten für die letzten tausend Tage und kann so erweitert werden, dass sie so weit zurück oder vorwärts gehen, wie Sie möchten.
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'
Ausgang:
Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20
Hinweise zur Leistung
Testen Sie es aus here, ist die Leistung überraschend gut: Die obige Abfrage dauert 0,0009 Sekunden.
Wenn wir die Unterabfrage erweitern, um ca. 100.000 Zahlen (und damit etwa 274 Jahre Daten), läuft es in 0,0458 Sekunden.
Übrigens ist dies eine sehr portable Technik, die mit den meisten Datenbanken mit kleinen Anpassungen funktioniert.
Es ist nicht klar, was Sie fragen. Was ist das Problem, das du hast? Fragen Sie, ob Sie alle Tabellen in allen Datenbanken abfragen können oder fragen Sie, ob Sie eine Tabelle namens "system" abfragen können? Das zweite Beispiel sollte gut funktionieren. Das erste Beispiel funktioniert nicht wie du denkst, das sind zwei Textabschnitte, keine Daten. Sie müssen Daten in einem geeigneten Format speichern. – Tom
Ich denke, dass sie einfache Abfragen bedeuten, um Listen von Daten oder Zahlen zwischen vorgegebenen Bereichen zu erhalten. – MartW
@Tom: Ich nehme an, er fragt nach 'generate_series'. – Quassnoi