Oracle: ¿La mejor declaración SELECT para obtener la diferencia en minutos entre dos columnas de DateTime?
Pregunta
Estoy intentando cumplir con una solicitud de informe bastante difícil de un cliente, y tengo que encontrar la forma de obtener la diferencia entre dos columnas de DateTime en minutos. He intentado usar Trunc y Round con varios formatos y parece que no puede con una combinación que tenga sentido. ¿Hay una manera elegante de hacer esto? Si no, ¿hay alguna forma de hacer esto?
Solución
SELECT date1 - date2
FROM some_table
devuelve una diferencia en días. Multiplica por 24 para obtener una diferencia en horas y 24 * 60 para obtener minutos. Así que
SELECT (date1 - date2) * 24 * 60 difference_in_minutes
FROM some_table
debería ser lo que estás buscando
Otros consejos
De forma predeterminada, la resta de la fecha de oracle devuelve un resultado en # de días.
Así que solo multiplica por 24 para obtener el número de horas, y nuevamente por 60 para el número de minutos.
Ejemplo:
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 - enlace muerto a partir del 2012-01-30
Parece que este es el recurso:
http://asktom.oracle.com/pls/asktom /ASKTOM.download_file?p_file=6551242712657900129