Я пытаюсь выполнить довольно сложный запрос от клиента, и мне нужно найти, чтобы получить разницу между двумя столбцами DateTime за считанные минуты. Я попытался использовать trunc и round с различными форматами и, похоже, не может придумать комбинацию, которая имеет смысл. Есть ли элегантный способ сделать это? Если нет, существует ли любой способ сделать это?
Oracle - лучший оператор SELECT для получения разницы в минутах между двумя столбцами DateTime?
Ответ 1
SELECT date1 - date2
FROM some_table
возвращает разницу в днях. Умножьте на 24, чтобы получить разницу в часах и 24 * 60, чтобы получить минуты. Так
SELECT (date1 - date2) * 24 * 60 difference_in_minutes
FROM some_table
должен быть тем, что вы ищете
Ответ 2
По умолчанию вычитание даты оракула возвращает результат за # дня.
Так просто умножьте на 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
http://asktom.oracle.com/tkyte/Misc/DateDiff.html - ссылка мертва на 2012-01-30
Похоже, что это ресурс:
http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551242712657900129