计算两个月数据的差异b / w

时间:2016-08-17 11:42:23

标签: php mysql date

我有一个mysql表命令,因为我有一个order_date列,它是当前时间戳(2016-08-17 00:00:00.000000)。现在我想选择或统计本月和前一个月输入的数据,之后我可以找到这两个月之间的差异,我使用的是这个代码而且它无法正常工作。

    $sql="SELECT * FROM order WHERE order_date > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
    $result = $this->db->query($sql);
    return $result;

这不起作用产生了mysql错误。

4 个答案:

答案 0 :(得分:0)

首先,以下是获取当月和上个月所有值的正确逻辑:

select *
from orders o
where order_date >= date_sub(date_sub(curdate(), interval day(curdate) - 1 day), interval 1 month);

然后,使用条件聚合进行比较。这是一个简单的方法:

select sum(month(order_date) = month(curdate())) as cur_month,
       sum(month(order_date) <> month(curdate())) as prev_month,
       (sum(month(order_date) = month(curdate())) -
        sum(month(order_date) <> month(curdate()))
       ) as diff
from orders o
where order_date >= date_sub(date_sub(curdate(), interval day(curdate) - 1 day), interval 1 month);

注意:我没有完全看到将部分月份(本月)与整月(上个月)进行比较的效用,但这是您似乎要求的。如果您要求不同的内容,请询问另一个问题,并提供样本数据和所需结果。

答案 1 :(得分:0)

尝试

$sql="SELECT * FROM order WHERE DATE(order_date) LIKE DATE_SUB(CURDATE(), INTERVAL 1 MONTH)";
$result = $this->db->query($sql);
return $result;

答案 2 :(得分:0)

答案 3 :(得分:0)

使用它。希望它有助于你想要的。感谢

   $todayDate = date('Y-m-d');
   $todayMonth = date("m", strtotime($todayDate ));
   $previousMonth = $todayMonth - 1;

   $sql = "SELECT * FROM order WHERE MONTH(order_date) BETWEEN '$todayMonth' AND '$previousMonth'";