mysql - 超过30天不能查询

标签 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 天每天的销售总数。

最佳答案

可以在这一行看到问题:

GROUP BY DAY(date)

由于天不能小于 1 或大于 31 并且它们是相同的,因此如果您想获得更多结果,则需要按日期分组。

关于mysql - 超过30天不能查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50805827/

相关文章:

php - Eloquent 关系同步

mysql - 将 User-Agent 字符串的哈希存储在 MySQL 表中 : insert if not exists, 返回 id

mysql - JOIN 中的复杂条件

mysql - arel union和消息中的最新对话

php - 如何获取动态下拉列表的搜索结果计数?

mysql 按最大然后第二大排序

php - mysqli 准备好的插入语句不起作用

php - 使用 'now()' 格式化存储在数据库中的时间

mysql - 使用 SQL 设置表中的列以匹配另一个表中的最高上下文值

java - Java 中的 SQL 查询 : (JDBC) How to use the SELECT statement?