Maison >base de données >tutoriel mysql >Comment remplir une table MySQL avec une plage de dates à l'aide d'une procédure stockée ?
Génération d'une table de plage de dates MySQL avec une procédure stockée
Souvent, vous avez besoin d'un tableau rempli d'une séquence de dates dans une plage spécifique, par exemple du 01/01/2011 au 31/12/2011. Une procédure stockée offre une solution efficace.
La procédure stockée suivante, filldates
, utilise une boucle WHILE
pour parcourir la plage de dates et insérer chaque date dans la colonne _date
de votre table :
<code class="language-sql">DROP PROCEDURE IF EXISTS filldates; DELIMITER | CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; SET adate = dateStart; WHILE adate <= dateEnd DO INSERT INTO your_table (_date) VALUES (adate); SET adate = adate + INTERVAL 1 DAY; END WHILE; END | DELIMITER ;</code>
Pour remplir votre tableau, exécutez la procédure filldates
en fournissant les dates de début et de fin :
<code class="language-sql">CALL filldates('2011-01-01','2011-12-31');</code>
Cette méthode crée rapidement le tableau contenant toutes les dates comprises dans la plage spécifiée.
Pour éviter les entrées en double, modifiez la procédure pour vérifier les dates existantes avant l'insertion :
<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; SET adate = dateStart; WHILE adate <= dateEnd DO IF NOT EXISTS (SELECT 1 FROM your_table WHERE _date = adate) THEN INSERT INTO your_table (_date) VALUES (adate); END IF; SET adate = adate + INTERVAL 1 DAY; END WHILE; END;</code>
Cette procédure révisée garantit l’unicité des données. N'oubliez pas de remplacer your_table
par le nom réel de votre table.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!