Pregunta

Aquí están mis datos:

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 

Lo que me gustaría hacer es agrupar por cada fecha y luego listar los números de identificación debajo de cada fecha. ¿Debo obtener los distintos valores de fecha y luego recorrerlos para obtener las entradas que caen en la fecha? ¿Es esto eficiente?

para que mi salida se vea como:

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

Solución

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

En lugar de hacerlo en varias consultas, solo recuperas todos los datos a la vez. Si solo necesita algunas fechas, simplemente coloque una cláusula WHERE antes del ORDER BY .

Otros consejos

Sus fechas almacenadas tienen información de tiempo (el tipo de la columna es DATETIME o TIMESTAMP), para hacer un grupo, debe extraer solo la parte de la fecha de su intervalo de tiempo, puede usar DATE () function.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top