0

我有一个表格,我可以在其中输入申请人的条目。它有一个 date_add 列,其中类型为时间戳,默认值为 current_timestamp。我想制作每周和每月的报告,但我无法决定最好的做法是什么。我需要一个 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.";

我知道这是不正确的,但这就是我目前所能想到的。

我想要的另一件事是,我希望它是准确的年月报告..

编辑:输出应该是:2013 年 6 月整个月有 13 名申请人。 - 或者如果每周 - 2013 年 7 月第三季度有 3 名申请人。

4

2 回答 2

1

我建议采用以下方法。首先,使用您的 php 代码来确定您的搜索期开始的日期和结束的日期。例如,如果它是 2013 年 9 月的月度报告,那么您的开始日期将为 2013 年 9 月 1 日,结束日期为 2013 年 10 月 1 日。然后你只需要一个查询。

 where date_added >= $startdate
 and date_added < $enddate

这种方法的主要好处是:

  1. 您的时间戳字段的时间部分得到处理。
  2. 您的查询将相当快地运行,尤其是在对 date_added 进行索引的情况下。
  3. 用应用程序代码整理programmnig逻辑比用sql更容易
  4. 您可以将查询编写为存储过程,以使其更快。
于 2013-11-05T12:58:35.147 回答
0

这可以是你的 sql 语句

select * from tblapplicant where month(date_added) > $month
select * from tblapplicant where DAYOFWEEK(date_added) = X

您应该将 X 替换为您的工作日 1 = 星期日,2 = 星期一,...,7 = 星期六

于 2013-11-05T12:41:10.150 回答