0

假设这是我数据库中的表:

ID      | APP_TIME                  | NAME
----------------------------------------------------
1       | 2012-07-08 10:00:00       | John
2       | 2012-07-08 12:00:00       | Johnny
3       | 2012-07-09 13:00:00       | Fred
4       | 2012-07-10 09:00:00       | George
5       | 2012-07-10 10:30:00       | Eva
6       | 2012-07-10 14:00:00       | Monica
7       | 2012-07-11 12:00:00       | Helen
8       | 2012-07-11 13:00:00       | Kim

然后我想在我的网站上输出:

07-08-2012
Time    | Name
----------------------------------------------------
10:00   | John
12:00   | Johnny


07-09-2012
Time    | Name
----------------------------------------------------
13:00   | Fred


07-10-2012
Time    | Name
----------------------------------------------------
09:00   | George
10:30   | Eva
14:00   | Monica


07-11-2012
Time    | Name
----------------------------------------------------
12:00   | Helen
13:00   | Kim

我的问题不是格式化日期时间值和所有这些......对我来说,挑战是根据它们“属于”的日期列出相应的结果。

有人帮忙吗?:)

4

2 回答 2

1

让 MySQL 像这样为您完成艰苦的工作:

SELECT DATE(app_time) as `day`, TIME(app_time) as `time`, name FROM table ORDER BY `day` ASC, `time` ASC

这将返回日期、一天中的时间和按日期排序的名称,然后是一天中的时间。

然后,您循环结果行并聚合到您喜欢下面示例的任何结构中(假设您已经从查询集中获得了一个结果集,$result并且您正在使用 mysqli)

$sorted_array = array();
while ($row = mysqli_fetch_object($result)) {
    $sorted_array[$row->day][] = array('time' => $row->time, 'name' => $row->name);
}
于 2012-08-03T18:27:46.740 回答
0

想出了这个解决方案:

$today = date('%Y-%m-%d 00:00:00');
$get_dates = mysql_query("SELECT DISTINCT DATE_FORMAT(app_time, '%Y-%m-%d') AS new_date FROM reservations WHERE app_time > '$today' ORDER BY app_time ASC");
while ($row = mysql_fetch_array($get_dates)) {
    $the_date = $row['new_date'];
    $results = mysql_query("SELECT * FROM reservations WHERE app_time >= '$the_date 00:00:00' AND app_time < '$the_date 23:59:59' ORDER BY app_time ASC");
    while ($the_results = mysql_fetch_array($results))
    {
    // Do some stuff eg:
    echo $the_results['name'] . '<br />';
    }
}
于 2012-08-04T13:16:43.713 回答