MySQL-Datumsbereichsabfrage: Füllen Sie die Tabelle mit dem Datumsbereich
Das manuelle Ausfüllen eines bestimmten Datumsbereichs in einer MySQL-Tabelle kann zeitaufwändig sein. Um diesen Prozess zu automatisieren, können Sie eine gespeicherte Prozedur verwenden, um mehrere Datumsangaben gleichzeitig in die Tabelle einzufügen.
Lösung
Die folgende gespeicherte Prozedur filldates
füllt eine Tabelle mit dem Namen tablename
mit Datumsangaben zwischen dem Startdatum und dem Enddatum:
<code class="language-sql">DROP PROCEDURE IF EXISTS filldates; DELIMITER | CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO INSERT INTO tablename (datecolumn) VALUES (dateStart); SET dateStart = dateStart + INTERVAL 1 DAY; END WHILE; END | DELIMITER ;</code>
Um dieses Verfahren zu nutzen, rufen Sie es mit dem gewünschten Start- und Enddatum auf:
<code class="language-sql">CALL filldates('2011-01-01','2011-12-31');</code>
Dadurch werden alle Daten zwischen dem 1. Januar und dem 31. Dezember 2011 in die Tabelle tablename
eingefügt.
Bestehende Termine prüfen
Sie können diesen Prozess erweitern, um vor dem Einfügen zu prüfen, ob das Datum bereits in der Tabelle vorhanden ist:
<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; WHILE dateStart <= dateEnd DO SELECT datecolumn INTO adate FROM tablename WHERE datecolumn = dateStart LIMIT 1; IF adate IS NULL THEN INSERT INTO tablename (datecolumn) VALUES (dateStart); END IF; SET dateStart = dateStart + INTERVAL 1 DAY; END WHILE; END;</code>
Dadurch wird verhindert, dass doppelte Daten in die Tabelle eingefügt werden.
Das obige ist der detaillierte Inhalt vonWie füllt man eine MySQL-Tabelle effizient mit einem Datumsbereich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!