2

我有一个 mysql 表,其中包含 3 列文本格式的“事件”、格式 YYYY-MM-DD 的“日期”和格式 HH:MM 的“小时”。例如:

Event1  2013-08-20  18:30
Event2  2013-08-20  19:30
Event3  2013-08-20  20:00
Event4  2013-08-20  00:00
Event5  2013-08-20  02:30
Event6  2013-08-20  14:50
Event7  2013-08-20  00:30

该数据库包含一天中的不同日期和不同小时。我必须先按天排序所有事件,然后按小时排序,但小时顺序必须像这个例子:

Event6  2013-08-20  14:50
Event1  2013-08-20  18:30
Event2  2013-08-20  19:30
Event3  2013-08-20  20:00
Event4  2013-08-20  00:00
Event7  2013-08-20  00:30
Event5  2013-08-20  02:30

时间 00:00, 01:00, 02:00... 通常在开始,但我需要更改顺序。小时 00:00, 01:00, 02:00... 应该出现在最后,就像您在上一个示例中看到的那样。

我的句子是:

SELECT * FROM Events ORDER BY Date, Hour

但是这句话不适合我,因为它让我回到了这个价值观:

Event4  2013-08-20  00:00
Event7  2013-08-20  00:30
Event5  2013-08-20  02:30
Event6  2013-08-20  14:50
Event1  2013-08-20  18:30
Event2  2013-08-20  19:30
Event3  2013-08-20  20:00

MySql 或 PHP 中的哪个句子需要我显示我想要的结果?

谢谢大家 ;)

4

2 回答 2

1

您可以使用 MySQL 函数TIME_TO_SEC( )和IF.ORDER BY

假设下面的所有内容都05:00应该在最后:

SELECT
   *
FROM
   `Events`
ORDER BY
  `Date` ASC,
  IF(TIME_TO_SEC(`Hour`) < TIME_TO_SEC('05:00'), 1, 0) ASC,
  `Hour` ASC

SQLFIDDLE 的示例

于 2013-08-28T19:20:31.057 回答
0

你有没有尝试过

SELECT * FROM Events ORDER BY Date, time(Hour)
于 2013-08-27T22:52:55.837 回答