Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Daten zwischen Datumsangaben einschließlich leerer Zeilen in MySQL aus?

Wie wähle ich Daten zwischen Datumsangaben einschließlich leerer Zeilen in MySQL aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 10:48:13343Durchsuche

How to Select Data Between Dates Including Empty Rows in MySQL?

Auswählen von Daten zwischen Datumsangaben mit leeren Zeilen in MySQL

Das Abrufen von Daten zwischen bestimmten Datumsangaben aus einer Datenbank ist eine häufige Aufgabe. Allerdings kann es schwierig werden, wenn Sie innerhalb des Datumsbereichs auch leere Zeilen einschließen müssen. In diesem Artikel untersuchen wir eine Technik zur Behebung dieses Problems in MySQL.

Stellen Sie sich eine Tabelle namens „tbl“ mit Zeilen vor, die Daten und Datumsangaben enthalten:

2009-06-25    75
2009-07-01    100
2009-07-02    120

Eine typische Abfrage zur Auswahl Daten zwischen zwei Daten, beispielsweise „25.06.2009“ und „01.07.2009“, würden dies tun be:

SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01'

Bei dieser Abfrage werden jedoch alle leeren Datumsangaben innerhalb dieses Bereichs übersehen. Um sie einzubinden, bietet MySQL ein leistungsstarkes Konzept namens „Kalendertabellen“.

Eine Kalendertabelle ist eine Hilfstabelle, die eine Reihe von Datumsangaben enthält. Mit einer in dieser Anleitung gezeigten Technik können Sie ganz einfach eine erstellen:

-- create some infrastructure
CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

-- only works for 100 days, add more ints joins for more
SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

Diese Abfrage gibt alle Zeilen von „25.06.2009“ bis „01.07.2009“ zurück, einschließlich leerer Zeilen mit einem Nullwert für „Daten“. Beachten Sie, dass Sie diese Technik optimieren können, indem Sie die Unterabfrage durch eine regelmäßig aktualisierte Kalendertabelle ersetzen.

Das obige ist der detaillierte Inhalt vonWie wähle ich Daten zwischen Datumsangaben einschließlich leerer Zeilen in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn