restar fechas en oracle
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
Gracias
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
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
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
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
