2008-10-15 4 views
18

Я пытаюсь выполнить довольно сложный запрос от клиента, и мне нужно найти, чтобы получить разницу между двумя столбцами DateTime за считанные минуты. Я попытался использовать trunc и round с различными formats и, похоже, не может придумать комбинацию, которая имеет смысл. Есть ли элегантный способ сделать это? Если нет, есть ли любой способ?Oracle - лучший оператор SELECT для получения разницы в минутах между двумя столбцами DateTime?

ответ

38
SELECT date1 - date2 
    FROM some_table 

возвращает разницу в днях. Умножьте на 24, чтобы получить разницу в часах и 24 * 60, чтобы получить минуты. Так

SELECT (date1 - date2) * 24 * 60 difference_in_minutes 
    FROM some_table 

должно быть то, что вы ищете

9

По умолчанию дата оракул вычитанием возвращает результат в # дней.

Так что просто умножьте на 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