Я не , рекомендую вам сделать это, но чтобы показать вам, почему вы хотите разделить это на несколько столбцов, как рекомендовано @deceze.
Вы можете использовать mysql STR_TO_DATE () , чтобы (kindof) преобразовать строку в дату.Обратите внимание, что он полностью игнорирует первую часть временного диапазона, поэтому он эффективно сортирует по:
11:00 am
9:00 am
7:30 pm
2:30 pm
Запрос:
SELECT
time,
STR_TO_DATE(time,'%h:%i-%h:%i %p')
FROM time_table
ORDER BY STR_TO_DATE(time,'%h:%i-%h:%i %p') ASC
Второй запрос, который эффективно сортирует по этому:
9:00am
7:00am
6:30pm
1:00pm
:
SELECT
time,
STR_TO_DATE(CONCAT(SUBSTRING_INDEX(time,'-',1), SUBSTRING(time,LOCATE(' ', time)+1)), '%h:%i%p')
FROM time_table
ORDER BY STR_TO_DATE(CONCAT(SUBSTRING_INDEX(time,'-',1), SUBSTRING(time,LOCATE(' ', time)+1)), '%h:%i%p') ASC
(Я уверен, что кто-то, кто более опытен с регулярными выражениями, сможет сократить это).