Heim >Datenbank >MySQL-Tutorial >Wie füllt man fehlende Daten in MySQL-Datumsbereichen aus?

Wie füllt man fehlende Daten in MySQL-Datumsbereichen aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-23 16:56:09736Durchsuche

How to Fill Missing Dates in MySQL Date Ranges?

Fehlende Daten im Datumsbereich in MySQL ergänzen

In MySQL erfordert der Umgang mit fehlenden Daten die Ermittlung des erforderlichen Datums und das Füllen der Lücke mit dem entsprechenden Wert. Glücklicherweise gibt es eine Lösung, und sie beinhaltet die Verwendung des Tabellentricks NUMBERS, um eine aufsteigende Liste von Datumsangaben zu erstellen.

Erstellen Sie zunächst eine NUMBERS-Tabelle mit einer automatisch inkrementierenden ID-Spalte:

<code class="language-sql">CREATE TABLE numbers (
  id int(10) unsigned NOT NULL auto_increment,
   PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;</code>

Verwenden Sie eine INSERT-Anweisung, um die Tabelle mit der erforderlichen Anzahl von Werten zu füllen.

Als nächstes verwenden Sie DATE_ADD, um eine Datumsliste basierend auf dem ID-Wert zu generieren:

<code class="language-sql">SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY)
FROM `numbers` `n`
WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) <= '2010-06-14'</code>

Ersetzen Sie „2010-06-06“ und „2010-06-14“ durch Ihr eigenes Start- bzw. Enddatum.

Führen Sie abschließend LEFT JOIN basierend auf dem Zeitteil und der Datentabelle aus:

<code class="language-sql">SELECT `x`.`ts` AS `timestamp`,
          COALESCE(`y`.`score`, 0) AS `cnt`
     FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%Y-%m-%d') AS `ts`
             FROM `numbers` `n`
            WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) <= '2010-06-14') x
LEFT JOIN `y` ON STR_TO_DATE(`y`.`date`, '%d.%m.%Y') = STR_TO_DATE(`x`.`ts`, '%Y-%m-%d')</code>

In dieser Abfrage werden fehlende Daten mit 0 aufgefüllt. Um das ursprüngliche Datumsformat beizubehalten, verwenden Sie DATE_FORMAT(x.ts, '%d.%m.%Y') AS timestamp. Beachten Sie, dass die Tabelle y hier geändert wurde, um sicherzustellen, dass das Datumsformat konsistent ist und die Funktion STR_TO_DATE zur Konvertierung verwendet wird. Dies ist zuverlässiger als die Methode im Originalartikel.

Das obige ist der detaillierte Inhalt vonWie füllt man fehlende Daten in MySQL-Datumsbereichen 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