Heim  >  Artikel  >  Datenbank  >  So implementieren Sie die automatische Datumsvervollständigung in SQL

So implementieren Sie die automatische Datumsvervollständigung in SQL

(*-*)浩
(*-*)浩Original
2019-05-11 12:01:289854Durchsuche

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.

So implementieren Sie die automatische Datumsvervollständigung in SQL

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:

So implementieren Sie die automatische Datumsvervollständigung in SQL

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!

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