Oracle - Ayuda con Horas en Oracle

 
Vista:

Ayuda con Horas en Oracle

Publicado por Dawer Alfaro (1 intervención) el 16/07/2010 15:27:16
Buenas. no soy muy diestro con SQL Oracle, lo que pasa es lo siguiente, donde trabajo adquirieron un programa y nos dejaron la db "abierta" para hacer nosotros los reportes a la medida sin gastar de mas, resulta que me piden uno para el calculo de las horas de los empleados, pero tengo un problema, el campo en la bd es de tipo "VARCHAR2 (5 Byte)" esto quiere decir que a diferencia del sql normal no puedo solamente restar fecha_Fin - Fecha_Inicio.. Que puedo hacer.???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Horas en Oracle

Publicado por Sergio (39 intervenciones) el 16/07/2010 18:19:19
¿Te molestaría poner un ejemplo de una fecha en un VARCHAR2(5)?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Horas en Oracle

Publicado por luis (5 intervenciones) el 28/07/2010 15:24:03
Buenas,

Dado que la fecha la tienes en formato caracter la tienes que convertir a formato fecha utilizando la función TO_DATE(Cadena, Mascara).

Ejemplo

Select TO_DATE(fecha_ini, 'DD/MM/YYYY) - TO_DATE(fecha_fin, 'DD/MM/YYYYY) from dual;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Horas en Oracle

Publicado por herberziano (2 intervenciones) el 28/07/2010 21:44:29
exactamente esta correcto lo que sugiere luis, soy nuevo en oracle y fue uno de los primeros pequeños problemas que tuve pero exactamente esa funcion t ayuda a calcular dias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Horas en Oracle

Publicado por herberziano (2 intervenciones) el 28/07/2010 22:16:45
lA FUNCION COMPLETA ES UN EJEMPLO

select
to_date('27/03/2010 13:10:10','dd/mm/yyyy hh24:MI:SS') -
to_date ('27/03/2010 12:10:10','dd/mm/yyyy hh24:MI:SS')
from dual
Esta funcion t devuelve la diferencia en dias en este caso (0.0416666666666667) en dias y tenemos que convertirlo en Horas para eso existe otra funcion
donde &DateDay = 0.0416666666666667
SELECT
--TO_NUMBER(SUBSTR(A,1,4)) - 2000 years,
-- TO_NUMBER(SUBSTR(A,6,2)) - 01 months,
-- TO_NUMBER(SUBSTR(A,9,2)) - 01 days,
SUBSTR(A,12,2) hours,
SUBSTR(A,15,2) minutes,
SUBSTR(A,18,2) seconds
FROM (SELECT TO_CHAR(TO_DATE('20000101','YYYYMMDD')
+ &DateDay,'YYYY MM DD HH24:MI:SS') A
FROM DUAL);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar