Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在该月的最后一天获取上一个月的数据。_Mysql_Sql - Fatal编程技术网

Mysql 在该月的最后一天获取上一个月的数据。

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_

我每天凌晨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_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())));