Maison > base de données > tutoriel mysql > Comment remplir les dates manquantes dans les résultats d'une requête SQL ?

Comment remplir les dates manquantes dans les résultats d'une requête SQL ?

Patricia Arquette
Libérer: 2024-12-23 14:34:20
original
716 Les gens l'ont consulté

How to Fill Missing Dates in SQL Query Results?

Remplir les dates manquantes dans les résultats SQL

Lors de l'interrogation d'une base de données pour une plage de dates, il est courant de rencontrer des lacunes dans les données. Pour résoudre ce problème, il existe plusieurs approches simples pour compléter les résultats avec des dates vides et les nombres correspondants.

Du côté de MySQL

Une option consiste à créer une procédure stockée qui génère une table temporaire avec toutes les dates possibles dans la plage spécifiée. Cette table peut ensuite être jointe aux résultats de la requête pour renseigner 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;
Copier après la connexion

Du côté Perl

Si les modules Perl aiment Date : Si vous êtes disponibles, vous pouvez parcourir une plage de dates et vérifier les dates vides dans les résultats de la requête. Si trouvé, ajoutez une entrée à zéro pour cette date.

use Date::y;

# Get the date range
my $d1 = '2008-08-05';
my $d2 = '2008-08-07';

# Iterate over the date range
my $date = Date::y->date($d1);
while ($date <= Date::y->date($d2)) {
  # Check if the date exists in the query results
  if (! exists $results{$date}) {
    # Add the date with a zero count
    $results{$date} = 0;
  }
  $date = $date->next;
}
Copier après la connexion

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