跟踪一个月前的结果并获得每天的结果 - MySQL

时间:2014-10-22 18:01:56

标签: php mysql pdo

我正在根据MySQL database30 days ago检索结果。这就是我在做的事情:

"SELECT * FROM archived_check_in WHERE client_id = :id AND DATE(check_in_date) > DATE(DATE_SUB(NOW(), INTERVAL 30 DAY))"

现在我想知道如何从30 days ago获得我的所有结果,但实际上也会在30 day period内得到每天的结果。

最好的方法是什么?

更新:

好的,这是我想要回归的例子:

    $j = 0;
    $response = '';

    $sql="SELECT * FROM archived_check_in WHERE client_id = :id AND DATE(check_in_date) > DATE(DATE_SUB(NOW(), INTERVAL 30 DAY)) ";
    $sth=$DBH->prepare($sql);
    $sth->execute(array(':id' =>$current_user->ID));
    while($row = $sth->fetch(PDO::FETCH_ASSOC))
    {
        $i = 0;//<!-- used for that days total
        $response["row"][$j]["y"] = $row['check_in_date'];
        $response["row"][$j]["amount"] = $i + 1;
        $i++; 
    }
    $j++;

$response["row"][$j]...代表each day查找的30 day

1 个答案:

答案 0 :(得分:1)

以下是您如何获得每日计数的示例:

SELECT COUNT(*) AS day_count, DATE(check_in_date) AS day
  FROM archived_check_in
  WHERE client_id = :id
    AND DATE(check_in_date) > DATE(DATE_SUB(NOW(), INTERVAL 30 DAY))
  GROUP BY DATE(check_in_date)

请注意,当您只需要一些内容时使用SELECT * 非常浪费。只要有可能,请选择您感兴趣的列。

由于这需要在每一行上单独运行DATE()函数,因此在较大的数据集上会很慢。对于具有关联DATE的此操作专门设置新INDEX列的情况非常有用。