【发布时间】:2018-06-11 20:51:18
【问题描述】:
我有以下 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 天前的日期 STARTING 在一个月前,换句话说,我会得到 4 月 14 日到 5 月 11 日之间的日期,但奇怪的是 5 月 31 日。
每天的总数也开始变大,当我只运行特定月份的代码来验证总数时,假设我使用命令 "HERE Date(date1) BETWEEN '2018-05-01' AND '2018-05-31'" 我得到不同的值。
我做错了什么?我读了一些关于 Java 中“溢出”错误的内容,但不确定这是怎么回事。我只想查看过去 90 天每天的总销售额。
【问题讨论】:
-
尝试将您的问题减少到minimal reproducible example。通常通过这样做,您会自己找出问题所在。
-
dev.mysql.com/doc/refman/5.7/en/… 获取每个日期的总数,
GROUP BY DATE(CONVERT_TZ(date1, '+0:00', '-7:00')) -
巴尔玛说了什么;但要详细说明,您不仅获得了“30 天尾巴”,还获得了这 90 天中每月每一天(1-31)的总数,以及有效随机选择的“日期”值一个月中的哪一天。