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

StackOverflow https://stackoverflow.com/questions/206222

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь выполнить довольно сложный запрос на отчетность от клиента, и мне нужно найти способ получить разницу между двумя столбцами 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top