我有一个表格,用于输入申请人的条目。它有一个 date_added 列,其中类型为时间戳,默认值为 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位申请者。
最佳答案
我建议采用以下方法。首先,使用您的 php 代码确定搜索期开始的日期和结束的日期。例如,如果是 2013 年 9 月的月度报告,则开始日期为 2013 年 9 月 1 日,结束日期为 2013 年 10 月 1 日。然后您只需进行一个查询即可。
where date_added >= $startdate
and date_added < $enddate
这种方法的主要好处是:
- 处理时间戳字段的时间部分。
- 您的查询运行速度会相当快,特别是在 date_added 已编入索引的情况下。
- 使用应用程序代码比使用 SQL 更容易理清编程逻辑
- 您可以将查询编写为存储过程,以使其更快。
关于php - MySql按月、按周的时间戳查询及比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789181/