Einfaches Auffüllen von Datumsangaben in SQL-Abfragen
Beim Abrufen von Daten aus einer MySQL-Tabelle, die Datumsangaben enthält, kommt es häufig zu Lücken in den zurückgegebenen Daten . Um diese Lücken zu schließen und eine vollständige Datumsfolge zu erstellen, stehen mehrere Ansätze zur Verfügung.
MySQL-Serverseitiger Ansatz
Eine effektive Methode ist die Erstellung einer temporären Tabelle in MySQL, das den gewünschten Datumsbereich umfasst. Dies kann mit der folgenden gespeicherten Prozedur erreicht werden:
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
Diese Prozedur generiert eine temporäre Tabelle mit dem Namen foo, die alle Daten innerhalb des angegebenen Bereichs enthält. Sie können dann Ihre ursprüngliche Tabelle mit foo verlassen, um die fehlenden Daten mit Nullzählungen auszufüllen.
Clientseitiger Perl-Ansatz
Wenn Sie nur eingeschränkten Zugriff auf haben Wenn Sie auf einem MySQL-Server arbeiten oder mehr Flexibilität benötigen, können Sie das Auffüllen von Datumsangaben auch auf der Perl-Clientseite durchführen. Erwägen Sie die Verwendung eines Moduls wie Date::Parse oder DateTime::Lite:
use DateTime; my $start_date = '2008-08-05'; my $end_date = '2008-08-07'; my $date_range = DateTime->range(start => $start_date, end => $end_date); for my $date in $date_range->each('day') { print CSV "$date,0\n"; }
Dieser Ansatz durchläuft den angegebenen Datumsbereich und gibt fehlende Daten mit Nullzählungen aus.
Fazit
Abhängig von Ihrer spezifischen Situation und den Serverfunktionen bieten sowohl serverseitige als auch clientseitige Ansätze Optionen zum Auffüllen leerer Datumsangaben in SQL Abfragen. Der serverseitige Ansatz ist effizienter, erfordert jedoch Datenbankzugriff, während der clientseitige Ansatz mehr Flexibilität bietet, aber möglicherweise einen gewissen Leistungsaufwand mit sich bringt.
Das obige ist der detaillierte Inhalt vonWie kann ich fehlende Daten in meine SQL-Abfragen eintragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!