restar fechas en oracle

Ana
20 de Mayo del 2003
Hola, tengo un problema con las fechas en oracle. Necesito calcular la duracion de un viaje en horas teniendo la fecha (con hora) de inicio y fin del mismo, pero lo que me da siempre ,13 ponga lo que ponga. Si alguien me pudiera ayudar lo agradeceria.
Gracias

tbanos
20 de Mayo del 2003
Hola Ana

Supongo que el problema lo has tenido al querer restar fechas que seguramente eran char o varchar2, prueba a convertirlas en date. Te pongo un ejemplo. Esto te devuelve la cantidad de días enteros con una fracción decimal. Espero haberte ayudado, saludos Tamara.

SELECT to_date('19-05-03 12:00','dd-mm-yy hh4:mi')-to_date('16-05-03 00:00','dd-mm-yy hh24:mi') diferencia
FROM dual;

DIFERENCIA
----------
3,5

tbanos
20 de Mayo del 2003
Este procedimiento te devuelve la cantidad de días y horas que hay desde la fecha de inicio a la fecha final

CREATE OR REPLACE PROCEDURE diferencia_fechas (fecha_inicio date:='dd-mm-yy hh24:mi', fecha_final date:='dd-mm-yy hh24:mi') IS
diferencia number;
diferencia_dias number;
diferencia_horas number;
horas number;
BEGIN
diferencia:=fecha_final-fecha_inicio;
diferencia_dias:=trunc(diferencia);
diferencia_horas:=diferencia-diferencia_dias;
horas:=trunc(24*diferencia_horas);
DBMS_OUTPUT.PUT_LINE('El viaje tiene una duración de '||diferencia_dias||' dias y '||horas||' horas');
END diferencia_fechas;


Saludos Tamara