Restar tiempos en Oracle

Hola: Esta ha de ser muy sencilla:
Cuando tengo en una tabla dos campos de tipo date (D1, D2) y realizo una select del tipo 'select D2-D1 from tabla' me devuelve el resultado en días, y yo lo quiero en segundos. ¿Qué función de formato debo aplicarle?
Mil gracias, de veras.

1 respuesta

1
Respuesta de
Buenas, te paso una select, que ayuda a convertir el valor en varios formatos:
select to_char( :fecha1, 'dd-mon-yyyy hh24:mi:ss' ),
trunc( :fecha1-:fecha2 ) "Días",
trunc( mod( (:fecha1-:fecha2)*24, 24 ) ) "Horas",
trunc( mod( (:fecha1-:fecha2)*24*60, 60 ) ) "Minutos",
trunc( mod( (:fecha1-:fecha2)*24*60*60, 60 ) ) "Segundos",
to_char(:fecha2, 'dd-mon-yyyy hh24:mi:ss' ),
:fecha1-:fecha2 "Total día",
(:fecha1-:fecha2)*24 "Total hora",
(:fecha1-:fecha2)*24*60 "Total min",
(:fecha1-:fecha2)*24*60*60 "Total seg"
from dual
Un saludo.
Hola jaitram: Gracias por tu ayuda. Tengo un par de dudillas al respecto que me podrás solucionar:
1.- Esta select no me funciona en sqlplus, me devuelve el error SP2-0552: Variable de transferencia "FECHA2" no declarada. Como soy realmente novel en esto, no he usado nunca variables bind en las select, y no puedo arreglarlo.
2.- Como desarrollador, me resulta difícil comprender que Oracle, con más de 25 años de experiencia en BBDD, no proporciona funciones de formateo para este tipo de cosas, y haya que andar haciendo cuentas para obtener los segundos, etc.
Espero tu comentario, muchas gracias.
Juan Martínez
1. Perdona, al hacer la prueba, puse :fecha1, ya que en el TOAD (aplicación visual para ejecutar scripts, ver tablas, etc.. en Oracle) para después puedes sustituirla por la variable que desees. Para probarla con tus campos de fecha D1 y D2 de tu tabla, tendrías que poner:
select to_char( D1, 'dd-mon-yyyy hh24:mi:ss' ),
trunc( D1-D2 ) "Días",
trunc( mod( (D1-D2)*24, 24 ) ) "Horas",
trunc( mod( (D1-D2)*24*60, 60 ) ) "Minutos",
trunc( mod( (D1-D2)*24*60*60, 60 ) ) "Segundos",
to_char(D2, 'dd-mon-yyyy hh24:mi:ss' ),
D1-D2 "Total día",
(D1-D2)*24 "Total hora",
(D1-D2)*24*60 "Total min",
(D1-D2)*24*60*60 "Total seg"
from tabla
2. Sí, quizás podían haber implementado algún paquete para la utilización de ese tipo de funciones.
Un saludo.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Oracle o hacer tu propia pregunta: