Php SQL SELECT and GROUP BY Month在9个多月前未返回任何结果
我在这个MySQL查询中收到了一个奇怪的结果 我试图返回“订单”,按月份分组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
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子句更改为两个值之间的值?我敢打赌,如果你把它改为只处理纯日期,你会没事的。啊,这就是问题所在。我没想到要把它分解成实际的数学运算。非常感谢。