Méthode de remplissage des tables de plages de dates MySQL
Lorsque vous travaillez avec une base de données MySQL, vous devez souvent générer et remplir des tables contenant des plages de dates. Cette tâche serait très fastidieuse si elle était effectuée manuellement. Cet article présente une méthode d'automatisation efficace.
Supposons que nous devions remplir une table MySQL nommée "tablename" contenant toutes les dates comprises entre le 1er janvier 2011 et le 31 décembre 2011. La table ne comporte qu'une seule colonne de type DATE appelée "_date".
Nous pouvons utiliser des procédures stockées MySQL pour réaliser :
DROP PROCEDURE IF EXISTS filldates; DELIMITER | CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO INSERT INTO tablename (_date) VALUES (dateStart); SET dateStart = date_add(dateStart, INTERVAL 1 DAY); END WHILE; END | DELIMITER ; CALL filldates('2011-01-01', '2011-12-31');
Voici comment fonctionne la procédure stockée :
Pour éviter d'insérer des dates en double, vous pouvez utiliser la version modifiée suivante :
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO IF NOT EXISTS (SELECT 1 FROM tablename WHERE _date = dateStart) THEN INSERT INTO tablename (_date) VALUES (dateStart); END IF; SET dateStart = date_add(dateStart, INTERVAL 1 DAY); END WHILE; END;
Cette modification garantit que les dates en double ne sont pas insérées dans le tableau.
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!