1

ここに私のデータがあります:

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  
4

2 に答える 2

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

于 2009-03-08T23:28:01.507 に答える
2

保存された日付には時間情報があります (列のタイプは DATETIME または TIMESTAMP)。グループ化を行うには、タイムスパンの日付部分のみを抽出する必要があります。DATE ()関数を使用できます。

于 2009-03-08T17:43:56.963 に答える