Получите время 12 часов в порядке возрастания, используя mysql - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужно получать записи, основанные на времени, в порядке возрастания, но он извлекает данные, например, с 01:00 до 09:00 и последние 11:00, здесь время, сохраненное в столбце, имеет формат 12 часов, а структура столбца - varcha, но по причине Я не могу изменить его на mysql time, так как получить время в порядке возрастания в соответствии с am pm

SELECT * 
FROM table 
ORDER BY STR_TO_DATE(time_slot,'%h.%i%p')

current output:
01:00 pm
09:00 am
11:00 am


Expected output:

09:00 am
11:00 am
01:00 pm

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Проблема в описании формата, которое не соответствует входной строке: у него неправильный разделитель (. вместо :). В результате ваше преобразование возвращает null, и сортировка фактически не происходит, в результате чего записи отображаются в порядке undefined .

Вы можете легко проверить это с помощью следующего оператора, который возвращает null:

SELECT STR_TO_DATE('01:00 pm','%h.%i%p')

Я думаю, что вы хотите:

ORDER BY STR_TO_DATE(time_slot,'%h:%i %p')
0 голосов
/ 05 февраля 2020

Используйте ниже sql:

SELECT * 
FROM table_name 
ORDER BY STR_TO_DATE(timeField,'%h:%i %p');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...