【问题标题】:show results of last six months显示过去六个月的结果
【发布时间】:2013-05-15 09:42:37
【问题描述】:

我想显示过去六个月的 sql 查询结果,并显示结果的月份和年份,我将显示的代码不完整,因为实际上它要长得多,但我'已经试图给出最重要的部分.. 我使用了这个返回查询的函数(参数$k是区间...):


我有一个递增 $k 的循环,以便我可以查询六个月:

for($i=0;$i<=5;$i++){
        $requete = query($i);
        SQL_QUERY($requete); // the function that executes the query
    }       

我可以得到最后几个月的结果,直到 1 月但不是 12 月,因为年份是 2012 年而不是 2013 年。


我已经尝试过这样做,以便当月份为 12 时,年份将是当前年份 -1:

function print_date($y_m){
        foreach($y_m as $row){
             echo $row[0];
        if ($row[0] == 12){
             $_SESSION["y"]= $_SESSION["y"]+1;
             echo $_SESSION["y"];
        }
}

但它不起作用,:/有人知道如何做到这一点吗??

【问题讨论】:

    标签: php sql date


    【解决方案1】:

    您可以通过如下简单的 SQL 查询获取过去六个月的数据:

    SELECT SRC as SOURCE FROM mytable
    WHERE TYPE = 'SMS' 
        AND date >= DATE_SUB(NOW(), INTERVAL 6 month)
    

    扩展

    如果您需要一个月,您可以修改查询:

    SELECT SRC as SOURCE FROM mytable
    WHERE TYPE = 'SMS' 
        AND YEAR(date) = DATE_SUB(NOW(), INTERVAL $k month)
        AND MONTH(date) = DATE_SUB(NOW(), INTERVAL $k month)
    

    【讨论】:

    • 不,这不是我想要的,因为我是要得到不同的表,每个表对应一个一个月的结果。
    • 这确实会返回过去 6 个月的所有数据,但是 OP 可能出于某种原因每月使用一个查询。
    • @Kirk ERW 在这种情况下,我建议您编辑您的问题,因为您留下了对您的答案至关重要的信息。
    • 如果只需要一个月,则添加此条件“AND date
    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2020-05-12
    相关资源
    最近更新 更多