Ваша проблема в том, что вы конвертируете значения в тип символа, что означает, что сравнения выполняются в алфавитном порядке. Таким образом, '05:00 AM'
будет больше, чем '03:00 PM'
.
Несколько способов исправить это. Один конвертируется в символ, но использует 24-часовое время:
select TO_CHAR(orig_time, 'HH:MI AM') from orig_table
WHERE TO_CHAR(orig_time, 'HH24:MI') > '15:00'
ORDER BY TO_CHAR(orig_time, 'HH24:MI');
Обратите внимание, что вам не нужно проверять до полуночи, поступая таким образом.
Кроме того, вы хотите расширить его, скажем, до 1:00 следующего дня, вам придется начать использовать целую часть дат. Также в этом случае используйте ключевое слово BETWEEN
.