Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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
Php SQL SELECT and GROUP BY Month在9个多月前未返回任何结果_Php_Mysql_Date - Fatal编程技术网

Php SQL SELECT and GROUP BY Month在9个多月前未返回任何结果

Php SQL SELECT and GROUP BY Month在9个多月前未返回任何结果,php,mysql,date,Php,Mysql,Date,我在这个MySQL查询中收到了一个奇怪的结果 我试图返回“订单”,按月份分组 SELECT DATE_FORMAT(date_of_sale, '%b') AS date, SUM(quantity) AS items FROM order_elements JOIN orders ON order_elements.order_ref = orders.order_id WHERE cur_status = 1 AND quantity > 0 AND MONTH(date_of_sal

我在这个MySQL查询中收到了一个奇怪的结果

我试图返回“订单”,按月份分组

SELECT DATE_FORMAT(date_of_sale, '%b') AS date, SUM(quantity) AS items FROM order_elements JOIN orders ON order_elements.order_ref = orders.order_id WHERE cur_status = 1 AND quantity > 0 AND MONTH(date_of_sale) BETWEEN MONTH(CURDATE() - INTERVAL 8 MONTH) AND MONTH(NOW()) GROUP BY MONTH(date_of_sale) ORDER BY MONTH(date_of_sale) DESC
从现在到8个月前,当我运行查询以获取订单时,我得到以下结果:

==================
| date   | items |
==================
| Sep    | 95    |
| Aug    | 110   |
| Jul    | 106   |
| Jun    | 110   |
| May    | 100   |
| Apr    | 130   |
| Mar    | 100   |
| Feb    | 94    |
| Jan    | 7     |
===================
1月30日是我收到订单的最早也是第一个日期。任何其他销售日期都晚于1月30日

从现在到9个月前,当我运行相同的查询时,我没有得到任何结果

我认为这可能与9个月前的12月份相等有关,它落在了不同的年份,引起了一些问题,但我不确定。有人知道为什么多搜索一个月不会返回结果吗?这是因为一月之后没有数据,还是月份是不同的年份


当您查询此信息时,感谢您:

BETWEEN MONTH(CURDATE() - INTERVAL 9 MONTH) AND MONTH(NOW())
BETWEEN MONTH(CURDATE() - INTERVAL 8 MONTH) AND MONTH(NOW())
您从第12-9个月开始查询。因为12大于9,所以不会有结果。但当您查询此项时:

BETWEEN MONTH(CURDATE() - INTERVAL 9 MONTH) AND MONTH(NOW())
BETWEEN MONTH(CURDATE() - INTERVAL 8 MONTH) AND MONTH(NOW())
您正在从第1个月到第9个月进行查询


解决方案是,您还需要在查询中包括年份,而不仅仅是月份数。

您是否尝试过将处理月份的where子句更改为两个值之间的值?我敢打赌,如果你把它改为只处理纯日期,你会没事的。

啊,这就是问题所在。我没想到要把它分解成实际的数学运算。非常感谢。