php - MySql按月、按周的时间戳查询及比较

标签 php html mysql sql regex

我有一个表格,用于输入申请人的条目。它有一个 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

这种方法的主要好处是:

  1. 处理时间戳字段的时间部分。
  2. 您的查询运行速度会相当快,特别是在 date_added 已编入索引的情况下。
  3. 使用应用程序代码比使用 SQL 更容易理清编程逻辑
  4. 您可以将查询编写为存储过程,以使其更快。

关于php - MySql按月、按周的时间戳查询及比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789181/

相关文章:

mysql - 仅使用 1 个语句从 2 个具有条件的表创建列表

mysql - 我可以从任何IP地址远程访问mysql数据库吗???

javascript - 为什么 Firefox 输入时间时显示秒,最小单位为分钟?

Javascript:根据类显示/隐藏元素

MYSQL 两个不同表分组的总和

php - 刷新页面会重新发送表单数据,是否可以防止这种情况? (PHP)

html - 响应式 CSS 布局,想要使一列的宽度与其他列不同

php - 无法关闭 PHP 5.3.2 中的错误通知

php - Doctrine 实体对象到数组

php - mySql 之前和之后