无法查询超过30天

时间:2018-06-11 20:51:18

标签: mysql sql

我有以下MySQL查询:

SELECT
CONVERT_TZ(date1, '+0:00', '-7:00') as date,
sum(base_subtotal) as `base_subtotal`
FROM sales
WHERE date1 > (NOW() - interval 90 DAY)
GROUP BY DAY(date)
ORDER BY date DESC; 

尽管提取了90天的数据,MySQL仍然只返回任何特定日期间隔的30天尾部。所以,如果今天是6月11日,并且我使用"interval 30 day"命令提取请求,我将获得从现在到30天之前的所有日期。但是,如果我用60天的命令做同样的事情,我会在30个月之前获得一个月前开始的日期,换句话说,我会在4月14日到5月11日之间得到日期,但奇怪的是也是5月31日。

每天的总和也开始变大,当我运行特定月份的代码来验证总数时,我说使用命令"HERE Date(date1) BETWEEN '2018-05-01' AND '2018-05-31'"我会得到不同的值。

我做错了什么?我读了一些关于Java中“溢出”错误的内容,但不确定这是发生了什么。我只是想看看过去90天每天的销售总数。

3 个答案:

答案 0 :(得分:6)

问题可以在这一行看到:

GROUP BY DAY(date)

由于日期不能小于1或大于31且相同,如果您想获得更多结果,则需要按日期分组。

答案 1 :(得分:4)

DAY(date)就是这个月的某一天。因此,当您按此分组时,不同月份同一天的结果将组合在一起。您应该使用GROUP BY DATE(date)代替。

答案 2 :(得分:1)

您的小组仅在该月的某一天(即第1天,第2天,第3天......第31天)进行此操作并将这些日期分组。如果您将“按日分组(日期)”更改为“按日期分组”,则应该可以正常工作。