DUDA CON EL NVL
Hola buenas que me habia colado.
Os comento lo que me ocurre tengo una tabla con 4 registros que tienen la fecha y la hora de este estilo:
FRHR_CO_FRANJA: 1
FRHR_HO_INICIO:01/01/2003 00:00:00
FRHR_HO_FIN:01/01/2003 06:00:00
FRHR_CO_FRANJA: 2
FRHR_HO_INICIO:01/01/2003 06:00:00
FRHR_HO_FIN:01/01/2003 12:00:00
FRHR_CO_FRANJA: 3
FRHR_HO_INICIO:01/01/2003 12:00:00
FRHR_HO_FIN:01/01/2003 18:00:00
FRHR_CO_FRANJA: 4
FRHR_HO_INICIO:01/01/2003 18:00:00
FRHR_HO_FIN:01/01/2003 00:00:00
Queremos hacer una query para que nos devuelva la franja horaria en la que nos encontramos.El problema lo tenemos cuando es la franja de 18:00 a 0:00 que entiende que es fecha inicio menor que la de fin , hemos intentado solucionarlo con esta query, lo hemos logrado si las horas de las franjas fuesen constantes pero son administrables y no sabemos como poder hacerlo de forma que no haya que cambiar la query cada vez que se administre.
SELECT NVL(sum(FRHR_CO_FRANJA) ,4)
FROM ONFRHRMO
WHERE TO_CHAR(SYSDATE, 'HH24:MI:SS') BETWEEN TO_CHAR(FRHR_HO_INICIO, 'HH24:MI:SS') AND TO_CHAR(FRHR_HO_FINAL, 'HH24:MI:SS')
Gracias y un saludo.
Os comento lo que me ocurre tengo una tabla con 4 registros que tienen la fecha y la hora de este estilo:
FRHR_CO_FRANJA: 1
FRHR_HO_INICIO:01/01/2003 00:00:00
FRHR_HO_FIN:01/01/2003 06:00:00
FRHR_CO_FRANJA: 2
FRHR_HO_INICIO:01/01/2003 06:00:00
FRHR_HO_FIN:01/01/2003 12:00:00
FRHR_CO_FRANJA: 3
FRHR_HO_INICIO:01/01/2003 12:00:00
FRHR_HO_FIN:01/01/2003 18:00:00
FRHR_CO_FRANJA: 4
FRHR_HO_INICIO:01/01/2003 18:00:00
FRHR_HO_FIN:01/01/2003 00:00:00
Queremos hacer una query para que nos devuelva la franja horaria en la que nos encontramos.El problema lo tenemos cuando es la franja de 18:00 a 0:00 que entiende que es fecha inicio menor que la de fin , hemos intentado solucionarlo con esta query, lo hemos logrado si las horas de las franjas fuesen constantes pero son administrables y no sabemos como poder hacerlo de forma que no haya que cambiar la query cada vez que se administre.
SELECT NVL(sum(FRHR_CO_FRANJA) ,4)
FROM ONFRHRMO
WHERE TO_CHAR(SYSDATE, 'HH24:MI:SS') BETWEEN TO_CHAR(FRHR_HO_INICIO, 'HH24:MI:SS') AND TO_CHAR(FRHR_HO_FINAL, 'HH24:MI:SS')
Gracias y un saludo.
el error esta en la interpretacion de las fechas.
para oracle una fecha con hora 00:00:00 es el primer segundo del dia y el ultimo es 23:59:59
haz este select
select greatest(to_date('2005-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss'),
to_date('2005-10-01 18:00:00','yyyy-mm-dd hh24:mi:ss'))
from dual
y vez que la mayor fecha no es '2005-10-01 00:00:00' sino '2005-10-01 18:00:00'.
cambia el dato de la fecha.
para oracle una fecha con hora 00:00:00 es el primer segundo del dia y el ultimo es 23:59:59
haz este select
select greatest(to_date('2005-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss'),
to_date('2005-10-01 18:00:00','yyyy-mm-dd hh24:mi:ss'))
from dual
y vez que la mayor fecha no es '2005-10-01 00:00:00' sino '2005-10-01 18:00:00'.
cambia el dato de la fecha.
