Maison > base de données > tutoriel mysql > Comment remplir les dates manquantes dans les récupérations de données MySQL ?

Comment remplir les dates manquantes dans les récupérations de données MySQL ?

Barbara Streisand
Libérer: 2024-12-12 19:09:11
original
425 Les gens l'ont consulté

How to Populate Missing Dates in MySQL Data Retrievals?

Récupération de données entre des dates : remplissage d'enregistrements vides

Dans MySQL, la sélection de données dans une plage de dates spécifiée est généralement réalisée à l'aide de l'opérateur BETWEEN. Cependant, cette approche peut entraîner des dates manquantes lorsqu'aucune donnée n'est présente. Pour résoudre ce problème, une technique impliquant des « tableaux de calendrier » est utilisée.

Le concept d'un tableau de calendrier est de créer un tableau qui contient une séquence de dates dans la plage souhaitée. Ceci est réalisé en utilisant le code suivant :

CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
Copier après la connexion

Cette table fournit une plage de nombres de 0 à 9. Pour générer la table du calendrier, nous joignons les ints à lui-même plusieurs fois pour créer une liste d'intervalles de dates :

SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
FROM ints a JOIN ints b
ORDER BY a.i * 10 + b.i
Copier après la connexion

Le résultat est un tableau avec une séquence de dates allant du '2009-06-25' au '2009-07-04'. Pour récupérer les données, nous avons laissé joindre la table du calendrier avec la table d'origine :

SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
Copier après la connexion

Cette requête renvoie les données pour toutes les dates comprises entre le '2009-06-25' et le '2009-07-01', y compris les lignes sans données renseignées avec « 0 ».

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal