【发布时间】:2013-06-15 23:58:38
【问题描述】:
假设我有一个简单的 mysql 表,其中包含 id、title、date 列。每天可以有几行,但不是每一天都有一行。例如,可能有 5 行以 6 月 15 日为日期,但零行以 6 月 14 日为日期。我怎样才能得到过去 7 天的所有结果,不包括 6 月 14 日,因为它没有行。所以我不只是从当前日期减去 7 天。我只想获取过去 7 天的所有行。
然后我想将每一天作为单个结果返回,就像按日期分组一样,但是按时间戳的年/月/日部分,这样我得到的只有 7 个结果,每个结果就像单个行的数组。
我希望这是有道理的。有什么想法吗?
编辑: 我意识到我可以这样做:
WHERE Date BETWEEN DATE_SUB( NOW(), INTERVAL DATEDIFF( NOW(), (SELECT Date FROM test GROUP BY Date LIMIT 7,1 ) ) DAY ) and NOW()
但这会产生 SQL 语法错误。我要做的是一个子查询和按日期分组以每天获得一个结果,并从偏移量 7 开始返回一个结果,然后在其上执行 DATEDIFF 以获得 DATE_SUB 应该的天数输入INTERVAL x DAYS
【问题讨论】:
-
你看过其他相关的 Stack Overflow 帖子吗? Selecting the last 7 days from Now() in MYSQL
-
@Aiias 这是朝着正确方向迈出的一步。我不需要最后 7 天,我只需要实际上有某些东西的最后 7 天,如果这 20 天中只有 7 天输入了数据,这实际上可能是最后 20 天。如果我能算出要返回多少天,那么我可以使用 BETWEEN。