0

応募者のエントリを入力するテーブルがあります。タイプがタイムスタンプで、デフォルトが current_timestamp である date_added 列があります。週次レポートと月次レポートを作成したいのですが、どうすればよいかわかりません。このようなエントリの数を返す sql ステートメントが必要です..

switch($searchby){
case "monthly": $qry = "select * from tblapplicant where date_added > $month"; break;
case "weekly": $qry = "select * from tblapplicant where date_added > $week"; break;
}

$res = mysql_query($select);
$rec_count = mysql_num_rows($res);

echo "There are <font color='red' size='3'>".$rec_count."</font> matching records found.";

これが間違っていることはわかっていますが、現時点で考えられるのはこれだけです。

もう1つ欲しいのは、正確な年と月のレポートにしたい..

編集: 出力は次のようになります: 2013 年 6 月の 1 か月全体で 13 人の応募者がいます。 - または毎週の場合 - 2013 年 7 月の第 3 四半期には 3 人の応募者がいます。

4

2 に答える 2

1

次のアプローチをお勧めします。まず、php コードを使用して、検索期間の開始日と終了日の翌日を特定します。たとえば、2013 年 9 月の月次レポートの場合、開始日は 2013 年 9 月 1 日、終了日は 2013 年 10 月 1 日になります。次に、1 つのクエリを実行するだけです。

 where date_added >= $startdate
 and date_added < $enddate

このアプローチの主な利点は次のとおりです。

  1. タイムスタンプ フィールドの時刻コンポーネントが処理されます。
  2. 特にdate_addedがインデックス化されている場合、クエリはかなり速く実行されます。
  3. SQL を使用するよりも、アプリケーション コードを使用してプログラミング ロジックを整理する方が簡単です
  4. クエリをストアド プロシージャとして記述して、クエリをさらに高速化できます。
于 2013-11-05T12:58:35.147 に答える