2017-01-02 12 views
0

У меня есть таблица с полем времени. Формат времени: HH: мм. Часы ходят только с 22:00 до 06:00. Я хочу, чтобы отсортировать строки так, как они выглядят следующим образом:mysql порядок по часам, начинающийся с 22:00

Hour 
22:00 
22:30 
23:15 
00:15 
01:30 
03:50 
05:30 

Но в моем текущем запросе:

select * from events order by hour 

они выглядят следующим образом:

Hour 
00:15 
01:30 
03:50 
05:30 
22:00 
22:30 
23:15 

Возможно ли это? благодаря!

+0

ORDER BY с случаем 'ВЫБОР EVENTS.Hour ИЗ СОБЫТИЯ ORDER BY СЛУЧАЙ, КОГДА ЧАС (EVENTS.Hour)> = 22 ТОГДА ИНАЧЕ END или ORDER BY с IF 'SELECT EVENTS.Hour ОТ СОБЫТИЯ ORDER BY ЕСЛИ ( ЧАСОВ (EVENTS.Hour)> = 22 , 0 , 1 ) 'используя функцию HOUR как-то более чистые, то с помощью функции SUBSTR –

ответ

1

Попробуйте это:

SELECT 
    * 
FROM 
    events 
ORDER BY CASE 
    WHEN SUBSTR(hour, 1, 2) >= '22' THEN 0 
    ELSE 1 
END , hour;