我有以下 SQL:
SELECT
DATE(`date`), SUM(`total`)
FROM
`order`
WHERE
`status` = '3'
AND `date` > DATE(CURDATE() - INTERVAL 30 DAY)
GROUP BY DAY(`date`)
ORDER BY `date` DESC;
今天是 2014 年 3 月 27 日。但是当我从这个查询中得到 var_dump 结果时,我得到以下内容(为了节省空间而进行了编辑,数字被删掉了)
array(28) {
[0]=>
array(2) {
["DATE(`date`)"]=>
string(10) "2014-03-24"
["SUM(`total`)"]=>
string(17) "xxx"
}
[1]=>
array(2) {
["DATE(`date`)"]=>
string(10) "2014-03-23"
["SUM(`total`)"]=>
string(6) "xxx"
..它于 2014 年 2 月 25 日结束。肯定有最近三天的记录,我可以在表格中看到它们。当我运行 SELECT CURDATE();
时,我得到 2014-03-27。为什么不显示最近三天的内容?
最佳答案
你在做什么
GROUP BY DAY(`date`)
应该是
GROUP BY DATE(`date`)
DAY()
返回 date 在月份中的第几天,从 1 到 31,因此不同的月份可能有相同的值。
关于mysql - SQL语句没有给出最近三天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22683683/