【问题标题】:MySql timestamp query and comparison in monthly and weeklyMySql 月、周时间戳查询及比较
【发布时间】:2013-11-05 12:36:35
【问题描述】:

我有一个表格,我可以在其中输入申请人的条目。它有一个 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 名申请人。

【问题讨论】:

    标签: php html mysql sql regex


    【解决方案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. 您可以将查询编写为存储过程以使其更快。

    【讨论】:

    • 我明白。感谢您彻底解释......每周怎么样?
    • 你的 php 代码已经从你的 switch 语句开始了。您对每种情况所做的是设置两个变量,一个用于开始日期,一个用于结束日期。
    • 你觉得语句中每周加7天可以吗?
    • 这很难说,因为你的问题还不够清楚。也许如果您对其进行编辑并显示您想要实现的查询输出,我或其他人可以给出更好的答案。
    • 此语句不返回任何内容 select * from tblapplicant where date(date_added) >= 2013-09-01 and date(date_added)
    【解决方案2】:

    这可以是你的 sql 语句

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

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

    【讨论】:

    • 像这样的 where 子句中的函数往往会减慢生产速度。
    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2019-03-05
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多