【发布时间】:2020-05-29 06:14:08
【问题描述】:
我目前有这个查询:
SELECT
MONTHNAME(TIME) AS month,
YEAR(time) AS year,
COUNT(id) AS COUNT
FROM
appointment
WHERE
dealershipid = '38' && dealerstatus != 'No-Show' && TIME >= DATE_ADD(NOW(), INTERVAL - 12 MONTH)
GROUP BY
MONTH(TIME)
ORDER BY
`time` ASC
这意味着返回过去 12 个月内每个月的约会记录总数(滚动 12 个月,而不是 1-12 个月,可能是 2 月 19 日至 3 月 20 日)
这是它实际返回的内容:
+-----------+------+-------+--+
| month | year | COUNT | |
+-----------+------+-------+--+
| July | 2019 | 1 | |
| August | 2019 | 2 | |
| September | 2019 | 8 | |
| October | 2019 | 9 | |
| November | 2019 | 15 | |
| December | 2019 | 2 | |
| January | 2020 | 4 | |
| February | 2020 | 2 | |
+-----------+------+-------+--+
我认为一切都很好,但(例如)2020 年 2 月实际上有 13 个约会,而不是所述的 2 个。
这是一个包含数据和查询的数据库:
https://www.db-fiddle.com/f/pndaShANmnLZRXxNNe3GPk/1
编辑:
显然,唯一受影响的一个结果是 2 月(当前月份),因此查询的 NOW() 函数没有获取整个月份,而是现在之前的任何内容。
【问题讨论】:
-
您使用的是哪个 dbms? (那里有几个产品特定的功能......)
-
使用 phpmyadmin
-
您通常
GROUP BY与您SELECT相同的列,但那些是设置函数的参数的列除外。 IE。试试GROUP BY MONTH(TIME), YEAR(time)。 -
是的尝试过,但仍然显示相同的结果:(
-
同时指定预期结果。