Oracle – лучший оператор SELECT для получения разницы в минутах между двумя столбцами DateTime?
Вопрос
Я пытаюсь выполнить довольно сложный запрос на отчетность от клиента, и мне нужно найти способ получить разницу между двумя столбцами DateTime за считанные минуты.Я пытался использовать trunc и round с различными форматы и, кажется, не могу придумать комбинацию, которая имела бы смысл.Есть ли элегантный способ сделать это?Если нет, то есть ли любой способ сделать это?
Решение
SELECT date1 - date2
FROM some_table
возвращает разницу в днях.Умножьте на 24, чтобы получить разницу в часах, и на 24*60, чтобы получить минуты.Так
SELECT (date1 - date2) * 24 * 60 difference_in_minutes
FROM some_table
должно быть то, что вы ищете
Другие советы
По умолчанию вычитание даты Oracle возвращает результат в количестве дней.
Итак, просто умножьте на 24, чтобы получить количество часов, и еще раз на 60, чтобы получить количество минут.
Пример:
select
round((second_date - first_date) * (60 * 24),2) as time_in_minutes
from
(
select
to_date('01/01/2008 01:30:00 PM','mm/dd/yyyy hh:mi:ss am') as first_date
,to_date('01/06/2008 01:35:00 PM','mm/dd/yyyy HH:MI:SS AM') as second_date
from
dual
) test_data
http://asktom.oracle.com/tkyte/Misc/DateDiff.html - ссылка мертва по состоянию на 30 января 2012 г.
Похоже, это ресурс:
http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551242712657900129