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

1 respuesta

Respuesta
1
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 tu respuesta

Haz clic para o

Más respuestas relacionadas

Contar la cantidad de días existente entre dos fechas

1 respuesta - Hola!, soy nuevo en esto de Oracle y Mi consulta es la siguiente, tengo que...

Hola, Tengo problema con indices con función

1 respuesta - Hola Pedro, Mira tengo el siguiente problema, no se como funcionan los...

Tabla DBA_AUDIT_SESSION

1 respuesta - Buenos días, mi pregunta es la siguiente, espero me pueda ayudar: Cuando...

Problema con variable al crear un JOB

1 respuesta - Hola. Estoy intentando hacer una función que cree jobs y no soy capaz: /*...

Problemas con los string sql en una aplicación en Visual Basic 6.0 con una conexión DAO hacia Oracle

1 respuesta - Disculpa que te moleste, espero que puedas ayudarme. Tengo que dar soporte...

Presentar una fecha y hora en forms Builder

1 respuesta - Espero que me puedas ayudar y si es así que tu respuesta la pueda rcibir...

Fechas erroneas en Oracle 8i Release 8.1.7.0.0

1 respuesta - En un campo de tipo fecha encuentro fechas como la siguiente: 02/32/66 al...

SQL Loader

2 respuestas - Hola! Necesito cargar una tabla con datos almacenados en un archivo. Lo...