SQL Oracle: разница во времени(минута)
Просьба, подсказать,
как можно получить разницу времени в минутах,
к примеру чтобы получить разницу с разрывном в несколько суток, через trunc нахожу разницу и уже дальше перевожу в минуты :
select trunc(sysdate - (sysdate-7))*1440 from dual
мне нужно получить, разницу в минутах при условии что в качестве переменных будет передано 2 временного значения (начальная и конечная точка). для примера:
select sysdate, sysdate-1/1440*(3) from dual
есть 2 временные точки, на выходе нужно получить 3, но, если интервал между точками превышает час или сутки также на выходе получить количество минут, можно ли как то универсально это выполнить?
попробую привести сценарий использования:
на вход будут поданы начальная и конечная точка (sysdate и sysdate-1/1440*(3) разница между входными данными 3 минуты(т.е. интервал расчета данных 3 минуты),
далее в запросе я сравниваю предыдущий интервал (3 минуты) с интервалом который был подан на входящие данные, соответственно я пытаюсь получить разницу и дальше уже выстраивать окна расчета на основе полученного интервала,
ранее строил суточный запрос, где разница между входящими данными составляет несколько суток или 1 сутки т.е. на вход получил (sysdate и (sysdate-7)) соответственно рассчитывал расчетные периоды след. способом:
where time >= (sysdate-7) - trunc(sysdate - (sysdate-7))
and time < (sysdate-7)
соответственно сейчас столкнулся с затруднением, как более универсально можно расчитывать интервал между входными данными для дальнейшего использования, если разница между входными точками может несколько минут, часов или суток
Ответы (1 шт):
Результат разницы двух дат всегда кол-во дней, т.е. его надо просто умножить на кол-во минут в сутках:
with t (starttime, endtime) as (
select to_date ('01:00', 'hh24:mi') , to_date ('02:18', 'hh24:mi') from dual
)
select starttime, endtime, (endtime-starttime)*24*60 minutes
from t;
STARTTIME ENDTIME MINUTES
------------------- ------------------- ----------
2022-08-01 01:00:00 2022-08-01 02:18:00 78