Oracle-Лучший оператор SELECT для получения разницы в минутах между двумя столбцами DateTime?

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

3 ответов


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 - ссылка мертва по состоянию на 2012-01-30

похоже, что это ресурс:

http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551242712657900129