MySQL 側または Perl 側で SQL 結果に空の日付を入力するにはどうすればよいですか?また最も簡単な方法は何ですか?
<p>次のようなクエリを使用して、mysql テーブルから簡単な CSV を作成しています。</p>
<pre class="brush:php;toolbar:false;">select DATE(date),count(date) by DATE(date) order by date asc;</pre>
<p>次に、それらを Perl のファイルに直接ダンプします。 </p>
<pre class="brush:php;toolbar:false;">while(my($date,$sum) = $sth->fetchrow) {
CSV「$date,$sumn」を出力
}</pre>
<p>ただし、データには日付のギャップがあります: </p>
<pre class="brush:php;toolbar:false;">| 2008-08-05 | 4 |
| 2008-08-07 | 23 |</pre>
<p>欠落している日付をゼロカウントのエントリで埋めてデータを埋め込み、最終的に次のようにしたいと考えています。
<pre class="brush:php;toolbar:false;">| 2008-08-05 | 4 |
| 2008-08-06 | 0 |
| 2008-08-07 | 23 |</pre>
<p>私は、月の日付の配列といくつかの数学を使用して、非常に不器用な (ほぼ確実にバグが多い) 回避策をまとめましたが、mysql または perl には、より直接的な方法があることは間違いありません。 </p>
<p>なぜ私がそんなに愚かなのかについての天才的なアイデア/提案はありますか? </p>
<p>最終的に、いくつかの理由から、ストアド プロシージャを使用して、必要な日付範囲を処理する一時テーブルを生成することにしました。
<li>毎回検索する日付範囲はわかっています</li>
<li>残念ながら、このサーバーは現在 Perl モジュールをインストールできません。また、Date::-y のようなものがインストールされていないほどひどい状態です</li>
</ul>
<p>Perl の回答での日付/時刻の反復も非常に優れています。複数の回答を選択できればいいのにと思います。 </p>