Ok..assuming времени от 12 до 23 часов, как до полуночи и от 0 до 11 часов, как после полуночи, другими словами, как @Tony Эндрюс сказал полдень рассматривается как 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);
Я использовал мой systemtimestamp для тестирования, Вам необходимо заменить запрос select systimestamp datetimefield from dual
принести собственное поле DATETIME из таблицы, чтобы заставить его работать на вас.
Почему -30? Когда ваша воображаемая формула переходит от положительной к отрицательной? – Fosco
@Fosco. Потому что 23:30 30 минут * до полуночи. Не знаю, какой полуденный день вернется. – PaulG
@PaulG :) Это моя точка ... недостаточно информации для создания точной формулы без предположений. – Fosco