我有一个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中的哪句话需要我显示我想要的结果?
谢谢大家 ;)
答案 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
答案 1 :(得分:0)
你试过吗
SELECT * FROM Events ORDER BY Date, time(Hour)