Возможно, вам потребуется настроить синтаксис в Oracle, но концепция должна применяться.
SELECT d.*,
CASE WHEN sysdate BETWEEN Start_Time AND End_Time THEN 0 ELSE 1 END SortKey
FROM Details
ORDER BY SortKey, Date, Start_Time;
По сути, это создает столбец, который искусственно группирует результаты так, как вы хотите, чтобы они сортировались.Это может быть ценной техникой.Мне нравится видеть критерии сортировки - по крайней мере, во время отладки - поэтому я помещаю его в список SELECT.Вы также можете скрыть это только в предложении ORDER BY, если хотите.