Remplissage de dates vides dans les résultats SQL
Lors de l'interrogation de MySQL pour exporter les dates et les décomptes d'une table, des espaces dans la plage de dates peuvent laisser quelques jours portés disparus. Pour combler ces lacunes avec des entrées à nombre nul, une approche simple consiste à utiliser une procédure stockée côté serveur.
Remplissage côté serveur avec procédure stockée
Ce qui suit La procédure stockée crée une table temporaire contenant toutes les dates possibles dans une plage spécifiée. Cette table est ensuite jointe à gauche aux résultats de la requête pour remplir les dates manquantes.
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
Cette procédure prend deux dates en entrée et génère une table temporaire foo avec toutes les dates potentielles entre elles. Il effectue ensuite une jointure gauche avec la requête d'origine pour inclure toutes les dates manquantes et renvoyer un ensemble de données complet.
Vérification côté client (facultatif)
De plus, un simple check peut être implémenté côté client (par exemple, Perl) pour gérer les cas où la date actuelle n'est pas égale à la date précédente plus un jour. Dans de tels cas, des chaînes supplémentaires avec un compte nul peuvent être ajoutées à la sortie.
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!