Mysql 在该月的最后一天获取上一个月的数据。
我每天凌晨3点运行一个查询,以获得当月的销售额 这个问题在每个月的最后一天出现。因为这个月已经过去了。 所以当我在11月1日凌晨3点跑步时,它给出0。而它应该给我10月份的销售额。 这是问题所在Mysql 在该月的最后一天获取上一个月的数据。,mysql,sql,Mysql,Sql,我每天凌晨3点运行一个查询,以获得当月的销售额 这个问题在每个月的最后一天出现。因为这个月已经过去了。 所以当我在11月1日凌晨3点跑步时,它给出0。而它应该给我10月份的销售额。 这是问题所在 SELECT COUNT(order_id) AS added_orders FROM `order` WHERE date_added > DATE_ADD(CURDATE(), INTERVAL -31 DAY) AND order_status_id != 0 AND MONTH(date_
SELECT COUNT(order_id) AS added_orders
FROM `order`
WHERE date_added > DATE_ADD(CURDATE(), INTERVAL -31 DAY)
AND order_status_id != 0
AND MONTH(date_added)= MONTH(curdate())
有什么想法吗 你可以使用31天前的月份
SELECT COUNT(order_id) AS added_orders
FROM `order`
WHERE date_added > DATE_ADD(CURDATE(), INTERVAL -31 DAY)
AND order_status_id != 0
AND MONTH(date_added)= MONTH(DATE_ADD(CURDATE(), INTERVAL -31 DAY))
我更改了MONTH(date_added)=MONTH(curdate()),因此它使用前一天的月份试试这个
SELECT COUNT(order_id) AS added_orders
FROM `order`
WHERE date_added > DATE_ADD(CURDATE(), INTERVAL -31 DAY)
AND order_status_id != 0
AND MONTH(date_added)=Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));
不是真的。如果你想找一个连续的31天,比如11月15日的OP,你不会用10月作为那里的月份。OP不是在找一个连续的周期。问题是他在凌晨3点运行他的查询,因此在运行查询的当月最后一天
month(curdate())
将在下个月返回。我有一个查询,我每天凌晨3点运行::因此我的陈述仍然是100%正确的。OP每天运行查询。因此,在11月15日,您的查询返回10月,这将是错误的。每天查询都会根据其运行日期查看过去31天的数据。在您提出的场景中,该查询将返回上一个月的数据,这是不正确的。但是,如果您正在寻找连续31天的OP,则您的声明将100%错误,因为这不是OP所寻找的。:)或者将其添加到月份(date_added)=DateAdd(MONTH,-1,Convert(date,GetDate());
SELECT COUNT(order_id) AS added_orders
FROM `order`
WHERE date_added > DATE_ADD(CURDATE(), INTERVAL -31 DAY)
AND order_status_id != 0
AND MONTH(date_added)=Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));