mysql - SQL语句没有给出最近三天

标签 mysql

我有以下 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/

相关文章:

php - 单击按钮后将值添加到不同的列

c# - cpanel远程连接mysql数据库

php - 将用户帐户设置为在给定时间后过期

PHP PDO BindValue 无法正常工作

mysql - 选中未选中的值时更新

mysql - 计算并选择同一查询中列的最大值

PHP SLIM DELETE 问题始终获得成功消息

mysql - 持久的 MySQL 进程使用高达 95% 的 CPU

mysql - 使用 .sql.gz 文件还原数据库时,gunzip 附近的 SQL 语法错误

mysql - 从表中删除最小值