MySQL Query来计算上个月

Ibn*_*eed 22 mysql

我想计算上个月的总订单金额.

我得到了从当前日期获取当月数据的查询.

SELECT SUM(goods_total) AS Total_Amount  FROM orders
WHERE order_placed_date >= date_sub(current_date, INTERVAL 1 MONTH);
Run Code Online (Sandbox Code Playgroud)

现在我如何才能获得上个月的数据,不包括本月.

例如,本月(7月)我赚了15,000美元,上个月(6月)我赚了14,000美元.

我通过运行上面的查询得到$ 15,000.

但我不知道如何计算前几个月.

Art*_*kii 57

在这里,您可以使用它来获取MySQL上个月1月和上个月的最后一个月之间的日期:

... order_placed_date BETWEEN DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00')
AND DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59')
Run Code Online (Sandbox Code Playgroud)

  • 此查询实际上将从该月的最后一天开始,因为它将在最后一天的00:00:00设置间隔的结束点. (3认同)

Sha*_*ane 7

我发现Artem的查询没有从上个月的最后一天返回任何东西(可能是因为BETWEEN将从最后一天的00:00:00开始计算).

这似乎对我上个月有用.

order_placed_date BETWEEN DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-01')
AND DATE_FORMAT(NOW() ,'%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)


Big*_*dMe 5

最简单的解决方案

SELECT SUM(goods_total) AS Total_Amount FROM orders
WHERE YEAR(order_placed_date) = YEAR(CURDATE() - INTERVAL 1 MONTH)
AND MONTH(order_placed_date) = MONTH(CURDATE() - INTERVAL 1 MONTH)
Run Code Online (Sandbox Code Playgroud)