Oracle SQL TO_CHAR возвращает неверные индикаторы меридиана

Я пытаюсь заказать несколько раз по убыванию. Я использовал функцию TO_CHAR для извлечения времени из их даты, 12 часов с индикатором меридиана. Тем не менее, мои результаты не такие, как я ожидал - есть AM, смешанные с моими PM.

Вот мой запрос:

SELECT TO_CHAR(SAMPLETIME, 'HH:MI:SS AM') AS Time_Checked
ORDER BY Time_Checked DESC;

Вот пример результатов, которые я получаю:

Time Checked
-------------
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM

Я ожидаю дублирования времени, так как это исходит из базы данных, которая постоянно проверяет время задержки. Это дает мне равное количество утра и вечера. Я ожидаю, что результаты выборки будут только в PM, так как я делаю это во второй половине дня.

Любые идеи о том, почему это происходит? Когда я перешел на 24 часа, все заработало нормально.


person Stef    schedule 23.01.2019    source источник
comment
На ваш оператор выбора нет ограничений, поэтому вы выбираете все записи в своей таблице. Есть ли записи AM в таблице?   -  person OldProgrammer    schedule 23.01.2019
comment
Вы заказываете форматированную строку. Вместо этого вы можете order by SAMPLETIME desc.   -  person kfinity    schedule 23.01.2019


Ответы (1)


Потому что вы сортируете строку, а не дату.

SELECT TO_CHAR(SAMPLETIME, 'HH:MI:SS AM') AS Time_Checked
ORDER BY SAMPLETIME DESC;
person Vincent    schedule 23.01.2019