Pergunta

Aqui está a minha dados:

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 

O que eu gostaria de fazer é o grupo por cada data e, em seguida, listar os números de identificação abaixo de cada data. Eu deveria estar recebendo os valores de data distintas e, em seguida, de bicicleta através deles para obter as entradas que caem sobre a data? é esta eficiente?

para a minha saída seria algo como:

2009-01-01  
1  
2   
2009-01-02  
3  
2009-01-03  
4  
5  
Foi útil?

Solução

$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";
    }
}

Em vez de fazê-lo em várias consultas, basta buscar todos os dados ao mesmo tempo. Se você só precisa de algumas datas, em seguida, basta colocar uma cláusula WHERE antes do ORDER BY.

Outras dicas

As suas datas armazenadas tem informações de tempo (o tipo da coluna é DATETIME ou TIMESTAMP), a fim de fazer um grupo por, você precisa extrair apenas a parte da data o seu período de tempo, você pode usar o DATE () função

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top