PHP / MySQL: сортировка по времени, затем по дате

Я наткнулся на проблему, которую, как мне казалось, легко решить, но, похоже, сводит меня с ума. Итак, я пытаюсь отсортировать некоторые записи MySQL по времени, а затем как бы «сгруппировать» их по дате. Например, вот мои данные MySQL:

+----+------------+----------+---------------------------+--------+
| id | date       | time     | entry                     | status |
+----+------------+----------+---------------------------+--------+
| 21 | 2011-10-05 | 09:42:06 | All systems online.       |      1 |
| 22 | 2011-10-05 | 09:43:09 | Maintenance starting.     |      2 |
| 23 | 2011-10-04 | 08:42:06 | Systems online and ready. |      1 |
| 24 | 2011-10-05 | 09:44:30 | Systems are offline.      |      0 |
+----+------------+----------+---------------------------+--------+

Итак, запрос, который я использую для сортировки всего, следующий:

SELECT * FROM status order by date ASC;

Что дает следующие результаты:

+----+------------+----------+---------------------------+--------+
| id | date       | time     | entry                     | status |
+----+------------+----------+---------------------------+--------+
| 21 | 2011-10-05 | 09:42:06 | All systems online.       |      1 |
| 22 | 2011-10-05 | 09:43:09 | Maintenance starting.     |      2 |
| 24 | 2011-10-05 | 09:44:30 | Systems are offline.      |      0 |
| 23 | 2011-10-04 | 08:42:06 | Systems online and ready. |      1 |
+----+------------+----------+---------------------------+--------+

Вывод PHP вот в чем проблема. Итак, выход ПРЯМО СЕЙЧАС:

4 октября 2011 г.

  • Системы в сети и готовы. [08:42 AM]

5 октября 2011 г.

  • Все системы в сети. [09:42 AM]

  • Начало технического обслуживания. [09:43]

  • Системы отключены. [09:44]

Я ХОЧУ, чтобы результат был:

5 октября 2011 г. - Системы отключены. [09:44 AM]

  • Начало технического обслуживания. [09:43]

  • Все системы в сети. [09:42 AM]

4 октября 2011 г.

  • Системы подключены к сети и готовы. [08:42 AM]

По сути, я хочу, чтобы все было сгруппировано по дате (сначала последнее), и я хочу, чтобы самое последнее время было вверху, а не внизу.

Вот мой код PHP:

function getUpdates() {
    global $db;
    $updchk = "";
    $entries = $db->GetAll("SELECT * FROM status order by date DESC;");
    if (!$entries) { ?>
        <p>No entries in the database, yet.</p>
  <?php } else
    foreach ($entries as $entry) {
        if (ConvertDate($entry['date']) != $updchk) { ?>
            <h4><?php echo ConvertDate($entry['date']); ?></h4>
            <p><?php echo $entry['entry']; ?><span class="timestamp"> [<?php echo strftime('%I:%M %p', strtotime($entry['time'])); ?>]</span></p>
            <?php $updchk = ConvertDate($entry['date']); ?>
        <?php } else { ?>
            <p><?php echo $entry['entry']; ?><span class="timestamp"> [<?php echo strftime('%I:%M %p', strtotime($entry['time'])); ?>]</span></p>
        <?php }
    } ?>
<?php } ?>

Любая помощь приветствуется.

Спасибо!

5
задан Adriano Carneiro 5 October 2011 в 15:16
поделиться