按MySQL日期字段分组

时间:2012-12-02 17:49:07

标签: php mysql datetime group-by grouping

  

可能重复:
  Listing diary events grouped by days in PHP/MySQL

我有一个数据库,为我的城镇举办现场乐队演出,每个演出都存储在我的MySQL数据库中。

我想在白天分组,看看我网站上的演出。但GROUP BY功能只显示1条记录。如何在一个日期之前显示所有演出?

我的MySQL结构..

ID  date                    content
1   2012-12-02 00:00:00     Gig 1
2   2012-12-02 00:00:00     Gig 2
1   2012-12-03 00:00:00     Gig 1
2   2012-12-03 00:00:00     Gig 2

我想像这样展示..

-- Sun 02 December 2012 --
Gig 1
Gig 2

-- Mon 03 December 2012 --
Gig 1
Gig 2

2 个答案:

答案 0 :(得分:0)

试试这个

   SELECT  * 
   FROM    your_table
   WHERE  date = '".$your_variable_of_selectedDate."'
   GROUP BY date
   ORDER BY date

编辑: 如果你没有日期变量,那么只需给出一个特定的日期

   SELECT  date , content 
   FROM    your_table

   GROUP BY date
   ORDER BY date

答案 1 :(得分:0)

不要将结果分组到数据库层,在表示层中执行。例如,使用PDO:

$dbh = new PDO("mysql:dbname=$dbname", $username, $password);

$qry = $dbh->query('
  SELECT   UNIX_TIMESTAMP(date), content
  FROM     gigs
  WHERE    date > NOW()
  ORDER BY date
');

if ($qry->execute()) {

  // output headers
  echo '<h1>Upcoming gigs</h1>';

  $row = $qry->fetch();
  while ($row) {
    $current_date = $row['date'];

    // output $current_date initialisation
    echo '<h2>', date('D d F Y', $current_date), '</h2><ul>';

    do {
      // output $row details
      echo '<li>', htmlentities($row['content']), '</li>';
    } while ($row = $qry->fetch() and $row['date'] == $current_date);

    // output $current_date termination
    echo '</ul>';
  }

  // output footers

}