分组依据并在日期下显示条目

Posted

技术标签:

【中文标题】分组依据并在日期下显示条目【英文标题】:Group By and displaying entries under date 【发布时间】:2010-10-12 01:24:05 【问题描述】:

这是我的数据:

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  

【问题讨论】:

【参考方案1】:
$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";
    

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

【讨论】:

【参考方案2】:

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

【讨论】:

对,没关系。可以说我拉了不同的日期。我这样做是作为一个单独的查询吗?然后循环浏览结果并运行另一个查询以获取与日期匹配的所有条目?只是看起来效率不高...... 不,您只是在执行一个查询并丢弃该列的“时间”部分。

以上是关于分组依据并在日期下显示条目的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 SQL Server 中按日期和用户分组的条目之间的平均时间?

仅在最大日期而不是在组的其他条目中显示具有特定值的组

按月/年分组 FechedResults 以显示带有部分的 swiftui 列表

如何在 MongoDB 中按日期分组

PyQt5 QTableWidget:右键选择列,并在上下文菜单中显示删除条目

按多列分组以获取月份的常见条目