Leere Datumsangaben in SQL-Ergebnissen auffüllen
Wenn Sie mit Daten arbeiten, die Lücken enthalten, wie im bereitgestellten Beispiel, ist ein Auffüllen erforderlich leere Daten, um eine vollständige und genaue Darstellung zu gewährleisten. Hier sind einige Ansätze zur Behebung dieses Problems:
MySQL-Lösung
Eine einfache Lösung besteht darin, eine temporäre Tabelle mithilfe einer gespeicherten MySQL-Prozedur zu erstellen. Diese Tabelle enthält alle möglichen Daten innerhalb eines angegebenen Bereichs. Indem Sie die temporäre Tabelle mit den Ergebnissen Ihrer Abfrage verknüpfen, können Sie fehlende Daten ergänzen und gleichzeitig die vorhandenen Zählungen beibehalten:
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
Perl Solution
Alternativ Sie kann das Date::Calc-Modul in Perl verwenden, um eine Liste von Datumsangaben zu generieren und leere Datumsangaben mit einem foreach aufzufüllen Schleife:
use Date::Calc qw(:all); my @dates; my ($d1, $d2) = ('2008-08-05', '2008-08-07'); # Modify these as needed my $dates_per_month = @DaysInMonth[year($d2)-1900][month($d2)-1]; my $d = $d1; while ($d < $d2) { push @dates, $d; $d = NextDay($d); } my %counts; while (my ($date, $sum) = $sth->fetchrow) { $counts{$date} = $sum; } foreach my $date (@dates) { print CSV "$date,$counts{$date} || 0\n" # Print 0 for empty dates }
Zusätzliche Überlegungen
Die am besten geeignete Lösung hängt von den spezifischen Anforderungen und der Verfügbarkeit von Ressourcen ab. Bei großen Datensätzen ist der Ansatz mit gespeicherten Prozeduren möglicherweise leistungsfähiger, während die Perl-Lösung mehr Flexibilität bietet. Berücksichtigen Sie die folgenden zusätzlichen Faktoren:
Das obige ist der detaillierte Inhalt vonWie füllt man leere Datumsangaben in SQL-Ergebnissen auf, um eine vollständige Datendarstellung sicherzustellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!