Wie fülle ich leere Datumsangaben in SQL-Ergebnissen ein, entweder auf MySQL- oder Perl-Seite, und was ist die einfachste Methode?
<p>Ich erstelle eine schnelle CSV-Datei aus einer MySQL-Tabelle mit einer Abfrage wie: </p>
<pre class="brush:php;toolbar:false;">select DATE(date),count(date) from table group by DATE(date) order by date asc;</pre>
<p>Speichern Sie sie dann direkt in einer Datei in Perl: </p>
<pre class="brush:php;toolbar:false;">while(my($date,$sum) = $sth->fetchrow) {
CSV „$date,$sumn“ drucken
}</pre>
<p>Allerdings gibt es Datumslücken in den Daten: </p>
<pre class="brush:php;toolbar:false;">| 2008-08-05 |
|. 2008-08-07 |. 23 |</pre>
<p>Ich möchte die Daten auffüllen, fehlende Daten mit Null-Zählungseinträgen ergänzen und am Ende Folgendes erhalten: </p>
<pre class="brush:php;toolbar:false;">| 2008-08-05 |
|. 06.08.2008 |
|. 2008-08-07 |. 23 |</pre>
<p>Ich habe einen sehr umständlichen (mit ziemlicher Sicherheit fehlerhaften) Workaround zusammengeschustert, indem ich eine Reihe von Tagen im Monat und etwas Mathematik verwendet habe, aber es gibt definitiv einen direkteren Weg, entweder in MySQL oder Perl. </p>
<p>Irgendwelche genialen Ideen/Vorschläge, warum ich so dumm bin? </p>
<hr />
<p>Am Ende habe ich mich aus mehreren Gründen für die Verwendung einer gespeicherten Prozedur zum Generieren einer temporären Tabelle zur Verarbeitung des erforderlichen Datumsbereichs entschieden: </p>
<ul>
<li>Ich kenne den Datumsbereich, nach dem ich jedes Mal suchen muss</li>
<li>Leider kann dieser Server derzeit keine Perl-Module installieren und er ist in einem so schlechten Zustand, dass er nichts wie Date::-y installiert hat</li>
</ul>
<p>Die Datums-/Uhrzeititeration in der Perl-Antwort ist auch sehr gut, ich wünschte, ich könnte mehrere Antworten auswählen! </p>