Php 按MySQL日期字段分组
可能重复: 我有一个数据库,它保存了我所在城市的现场乐队演出,每一场演出都作为一条记录存储在我的MySQL数据库中 我想在白天分组,在我的网站上看演出。但GROUP BY函数只显示1条记录。如何在一个日期内显示所有演出 我的MySQL结构Php 按MySQL日期字段分组,php,mysql,datetime,group-by,grouping,Php,Mysql,Datetime,Group By,Grouping,可能重复: 我有一个数据库,它保存了我所在城市的现场乐队演出,每一场演出都作为一条记录存储在我的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
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
试试这个
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
不要在数据库层中对结果进行分组,而是在表示层中进行分组。例如,使用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
}
格式化和显示应在客户端完成,不在SQL中。我尝试过使用GROUP BY,但它只显示每个日期的一条记录。您使用的SQL语句是什么?您正在从测试组BYDATE中查找order BYDATE ASCSELECT*。请详细说明所选日期位的$your变量?您将给出的日期,以显示您的演出日期。有选择日期的选项吗?如果你没有日期变量,就用一个日期来代替,我明白你的意思了。我已经输入了一个日期,但它仍然分别显示同一天的演出。你分别是什么意思?举例说明如何?它是这样显示的2012年12月2日星期日-2012年12月2日星期日-2012年12月2日星期一-2012年12月3日星期一-2012年12月3日星期一-2012年12月3日星期一-Gig 2Hi感谢您的帮助。我在这段代码中遇到了一个错误,虽然是致命的错误:未捕获的异常“PDOException”带有消息“无效的数据源名称”。您可能需要更改以满足您的需要。啊,是的,我很愚蠢。现在已经整理好了,脚本正在运行,但是没有gig信息。日期存储为DATETIME字段,可以吗?应该可以。有什么东西在展示吗?头球?对不起,又是个白痴了!对它进行了分类,它工作得非常好。非常感谢!