Maison >base de données >tutoriel mysql >Comment remplir les dates manquantes dans un ensemble de données MySQL à l'aide d'une table numérique ?
MySQL : Remplissez les dates manquantes dans la plage de dates
Dans le domaine de la gestion des données, il est très courant de rencontrer des ensembles de données contenant des dates manquantes. Pour résoudre ce problème, MySQL propose une solution pour renseigner ces dates manquantes, garantissant ainsi une séquence de dates continue.
La clé pour remplir les dates manquantes dans MySQL est d'utiliser l'astuce de la table numérique. Cette méthode implique la création d'un tableau appelé « nombres » qui contient une colonne entière à incrémentation automatique, en fait une liste de nombres incrémentielle.
Ensuite, remplissez le tableau « numéros » avec suffisamment de lignes. Cela garantit une plage suffisante de nombres croissants pour couvrir la plage de dates souhaitée.
Pour créer une liste de dates, utilisez la fonction DATE_ADD. Plus précisément, dans la requête suivante, remplacez "2010-06-06" et "2010-06-14" par vos propres dates de début et de fin (assurez-vous d'utiliser le format AAAA-MM-JJ) :
<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>
Utilisez les résultats de cette requête comme table intermédiaire pour effectuer un LEFT JOIN sur la table de données d'origine en fonction de la partie temporelle :
<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), '%m/%d/%Y') AS `ts` FROM `numbers` `n` WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) < '2010-06-14') `x` LEFT JOIN `your_table` `y` ON DATE(`y`.`date_column`) = DATE(`x`.`ts`);</code>
Pour conserver le format de date, enveloppez le champ ts ci-dessus dans une fonction DATE_FORMAT :
<code class="language-sql">DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`</code>
En suivant ces étapes, vous pouvez remplir efficacement les dates manquantes dans votre ensemble de données MySQL, garantissant ainsi une représentation transparente de la plage de dates requise.
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!