分组并显示日期下的条目

时间:2009-03-08 17:35:06

标签: php sql mysql group-by

这是我的数据:

id date  
1 2009-01-01 10:15:23  
2 2009-01-01 13:21:29  
3 2009-01-02 01:03:13  
4 2009-01-03 12:20:19  
5 2009-01-03 13:01:06 

我想做的是按每个日期分组,然后列出每个日期下方的ID号。我应该获取不同的日期值,然后循环访问它们以获取日期中的条目吗?这有效吗?

所以我的输出看起来像:

2009-01-01  
1  
2   
2009-01-02  
3  
2009-01-03  
4  
5  

2 个答案:

答案 0 :(得分:3)

$query = "SELECT DATE(date) as mydate, id FROM your_data_table ORDER BY mydate, id";
$result = $pdo->query($query);

$oldDate = false;
while ( list($date, $id) = $result->fetch(PDO::FETCH_NUM) ) {
    if ( $oldDate != $date ) {
        echo "$date\n$id\n";
        $oldDate = $date;
    } else {
        echo "$id\n";
    }
}

您只需一次获取所有数据,而不是在多个查询中执行此操作。如果您只需要一些日期,那么您只需在WHERE之前添加ORDER BY条款。

答案 1 :(得分:2)

您存储的日期有时间信息(列的类型是DATETIME或TIMESTAMP),为了进行分组,您只需要提取您的时间跨度的日期部分,您可以使用DATE()函数