Heim >Datenbank >MySQL-Tutorial >Wie berücksichtigt man Nullwachstumstage bei der Auswahl von Datumsbereichen in MySQL?
MySQL: Wählen Sie alle Daten in einem Bereich aus, einschließlich Tage ohne Wachstum
Bei der Visualisierung des Benutzerwachstums ist es wichtig, Tage ohne Wachstum einzubeziehen . Um dies in MySQL zu erreichen, verwenden wir eine Technik, die als kartesisches Produkt bekannt ist.
Betrachten Sie die folgende Abfrage:
SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC
Diese Abfrage gibt Ergebnisse für Tage mit mindestens einem Benutzer zurück. Um Daten ohne Wachstum einzubeziehen, erstellen wir eine Tabelle mit Daten, die aus einem kartesischen Produkt generiert wurden:
select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from (select 0 as num 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) n1, (select 0 as num 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) n2, (select 0 as num 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) n3, (select 0 as num 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) n4, (select 0 as num 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) n5
Dies führt zu einer Tabelle mit aufeinanderfolgenden Daten im Bereich von „01.01.2003“ bis „jetzt()“ ', wodurch wir einen Left-Join mit unserer Benutzertabelle durchführen können:
select * from ( select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from (select 0 as num 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) n1, (select 0 as num 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) n2, (select 0 as num 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) n3, (select 0 as num 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) n4, (select 0 as num 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) n5 ) a where date >'2011-01-02 00:00:00.000' and date < NOW() order by date
Diese Abfrage stellt sicher, dass Tage mit Nullwachstum im Endergebnis dargestellt werden.
Das obige ist der detaillierte Inhalt vonWie berücksichtigt man Nullwachstumstage bei der Auswahl von Datumsbereichen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!