Oracle - лучший оператор SELECT для получения разницы в минутах между двумя столбцами DateTime? - PullRequest
19 голосов
/ 16 октября 2008

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

Ответы [ 3 ]

45 голосов
/ 16 октября 2008
SELECT date1 - date2
  FROM some_table

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

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

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

10 голосов
/ 16 октября 2008

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

Так что просто умножьте на 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
3 голосов
/ 16 октября 2008
...