2013-03-11 58 views
-1

我在MySQL表如何按日期在Php或MySQL中對數據進行分組?

comment_id comment_by_user comment_date    comment_body 
    1244   david_sam  2013-02-27 15:46:53   xyz 
    1245   raymond_davis 2013-02-27 13:46:53   xyz 
    1246   jam_jam   2013-02-14 18:46:53   xyz 

我想將此數據作爲

2013-02-27 ------------------------------------- 
1244  david_sam  15:46  xyz  
1245  raymond_davis 13:46  xyz 
2013-02-14 ------------------------------------- 
1246  jam_jam   18:46  xyz 

我如何能做到這一點,其中SQL查詢和PHP方法?

+1

[你嘗試過什麼?](http://whathaveyoutried.com) – 2013-03-11 10:53:21

+0

爲了讓生活爲自己的SQL查詢應該只在YYYY-MM-DD的格式返回日期更加容易。如果你也回來了,你只需要在稍後階段過濾它。 – CathalMF 2013-03-11 10:58:22

+2

MySQL無法產生您要求的輸出。相反,您應該選擇'DATE(comment_date)作爲comment_date'以及其他列。在你的PHP輸出中,你必須在每個循環迭代中測試日期是否發生變化,如果有,輸出一個新的標題。 – 2013-03-11 10:58:41

回答

2

您只需選擇所需的所有列

select comment_id, comment_by_user, 
     date(comment_date), time(comment_date), comment_body 
from comments 
order by comment_date desc, comment_id 

然後輸出行,當日期改變

$current_date = ''; 
while (list($id, $user, $date, $time, $body) = $sth->fetch(PDO::FETCH_NUM)) { 
    if ($date != $current_date) { 
     echo "$date ----\n"; 
     $current_date = $date; 
    } 

    echo "$id $user $time $body\n"; 
} 
0

試試這個插入附加行..

SELECT * FROM `table_name` ORDER BY `comment_date` DESC 

而你的php代碼應該像這樣..

$date = ''; 
foreach($records as $record) 
{ 
    if($date != date('Y-m-d'), strtotime($record->comment_date)) 
    { 
     // print "2013-02-14 -------------------------------------"; 
     $date = date('Y-m-d'), strtotime($record->comment_date); 
    } 

    // print "1246  jam_jam   18:46  xyz"; 
} 
相關問題