Die Methode zum Implementieren der automatischen Datumsvervollständigung in SQL: Generieren Sie zunächst einen bestimmten Bereich von Kalendertabellendaten, fragen Sie dann die Daten ab, die statistische Datentabellen über diese Kalendertabellenverbindung erfordern, und erhalten Sie schließlich die vollständigen Daten innerhalb dieses Bereichs , das ist Can.
Kürzlich geht bei der Entwicklung der statistischen Zugriffsfunktion der Datensatz für diesen Tag verloren, wenn die Daten für einen bestimmten Tag in der Datentabelle fehlen Es ist immer noch notwendig, es anzuzeigen. Wenn die Daten für diesen Tag nicht verfügbar sind, kann der Standardwert auf 0 gesetzt werden. Ich denke an zwei Lösungen:
1 Nachdem Sie die Daten gelesen haben, fügen Sie die fehlenden Daten hinzu Programmschleife, aber dies ist ein variabler Bereich für die statistischen Daten. Je nach Bedarf kann es für 7 Tage, 30 Tage oder 60 Tage gezählt werden, es ist etwas mühsam, die Daten durch das Programm zu vervollständigen.
2. Generieren Sie zunächst einen bestimmten Bereich von Kalendertabellendaten und fragen Sie dann die Daten in der statistischen Datentabelle über diese Kalendertabellenverbindung ab. Wenn nicht, sind die vollständigen Daten auf diese Weise vorhanden Dieser Bereich kann erreicht werden, sodass diese Lösung für diese Nachfrageänderung besser geeignet ist.
Generieren Sie nun die Kalendertabelle mit der folgenden SQL-Anweisung:
CREATE TABLE num (i INT);-- 创建一个表用来储存0-9的数字 INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的数字,方便以后计算时间 CREATE TABLE IF NOT EXISTS calendar(DATE DATE); -- 生成一个存储日期的表,date是字段名 -- 这里是生成并插入日期数据 INSERT INTO calendar(DATE) SELECT ADDDATE( ( -- 起始日期,从2017-1-1开始 DATE_FORMAT("2017-1-1", '%Y-%m-%d') ), numlist.id ) AS `date` FROM ( SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000 AS id FROM num n1 CROSS JOIN num AS n10 CROSS JOIN num AS n100 CROSS JOIN num AS n1000 ) AS numlist;
Nach der Ausführung der SQL werden 1W-Datensätze vom 01.01.2017 bis 18.05.2044 generiert Es reicht für eine lange Zeit, mehr Daten zu generieren, indem Sie die entsprechenden Bedingungen ändern. Dies wird hier nicht näher erläutert.
Führen Sie den folgenden SQL-Test aus:
SELECT COUNT(u.id) AS num, c.date FROM calendar AS c LEFT JOIN users AS u ON c.date = u.`created_at` WHERE c.date BETWEEN '2017-05-01' AND '2017-05-07' GROUP BY c.`date` ORDER BY c.`date`
Die folgenden Ergebnisse werden erhalten:
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die automatische Datumsvervollständigung in SQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!