假设我有一个简单的 mysql 表,其中包含 id、标题、日期列。每天可以有几行,但并非每天都有一行。例如,可能有 5 行以 6 月 15 日为日期,但有 0 行以 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
最佳答案
您将无法以数组形式获取当天的结果,但您可以按日期对其进行分组,并用逗号分隔标题:
SELECT GROUP_CONCAT(title) AS titles, date
FROM test
WHERE date > DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY date;
然后在 PHP 中,执行如下操作:
foreach ($results as $row)
{
echo $row['date'];
foreach ($row['titles'] as $title)
{
echo $title;
}
}
关于php - 如何获取过去 7 天的 MySQL 记录,但仅限有记录的日期,并返回每一天的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129029/