문제

내 데이터는 다음과 같습니다.

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  
도움이 되었습니까?

해결책

$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.

다른 팁

저장 날짜에는 시간 정보가 있습니다 (열의 유형은 DateTime 또는 Timestamp), 그룹을 수행하려면 시간대 날짜 부분 만 추출해야합니다. 데이트() 기능.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top