Хорошо, предполагая время с 12 до 23 часов, как до полуночи, и с 0 до 11 часов, как после полуночи, другими словами, как сказал @Tony Andrews Полдень рассматривается как 720 минут до полуночи
Вот еще одно решение -
SELECT (
CASE
WHEN TO_CHAR(datetimefield,'HH24') BETWEEN 12 AND 23
THEN -1 * (60 * (12 - TO_CHAR(datetimefield,'HH')) - TO_CHAR(datetimefield,'MI'))
WHEN TO_CHAR(datetimefield,'HH24') BETWEEN 0 AND 11
THEN 60 * (TO_CHAR(datetimefield,'HH')) + TO_CHAR(datetimefield,'MI')
END) diff
FROM (select systimestamp datetimefield from dual);
Я использовал мою системную метку времени для тестирования. Вам нужно заменить запрос select systimestamp datetimefield from dual
, чтобы получить собственное поле даты и времени из таблицы, чтобы оно работало для вас.