php - 如何获取过去 7 天的 MySQL 记录,但仅限有记录的日期,并返回每一天的记录?

标签 php mysql

假设我有一个简单的 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/

相关文章:

php - Laravel通过中间表获取belongsTo

php - 如何在 woocommerce 中添加自定义运费?

java - 插入数据后hibernate一对一查询报错

PHP/AJAX - 当 MySQL 中出现新行时随时更新列表

php - 允许未选择选项的 SQL 搜索

php - 覆盖 <tr> onclick,在单个单元格中切换模式

Mysql将数据追加到字段中?

mysql - 在 MySQL 中的 order by 上指定 `asc` 是不必要的吗?

php - CakePHP 中长时间运行 shell 的数据库连接问题

PHP PDO插入问题