Php MySql按小时排序自定义顺序

时间:2013-08-27 22:44:15

标签: php mysql sql date datetime

我有一个mysql表,其中包含3列文本格式的“Event”,格式为YYYY-MM-DD的“Date”和格式为HH:MM的“Hour”。例如:

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中的哪句话需要我显示我想要的结果?

谢谢大家 ;)

2 个答案:

答案 0 :(得分:1)

您可以在IF中使用MySQL函数TIME_TO_SEC()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

Example of SQLFIDDLE

答案 1 :(得分:0)

你试过吗

SELECT * FROM Events ORDER BY Date, time(Hour)