Comando para comparar fechas

Un gran favor...
Tengo una tabla donde se guardan unos periodos de acuerdo a cortes de pago
por ejemplo.
Periodo fecha inicial fecha final
1 01/01/2003 03/31/2003
2 04/01/2003 06/31/2003
3 07/01/2003 09/30/2003
4 10/01/2003 12/31/2003
En el modulo se colocan las fechas inicial y final de cobro de impuestos.
Se requiere seleccionar el periodo teniendo en cuanta la fecha del sistema y las fechas inicial y final del corte.
Se tiene la siguiente instrucción
SELECT IMP_VIG_VIGE_NUMERO, PERIODO INTO V_VIGENCIA, V_PERIODO FROM RNT_PERIODOS
WHERE (SYSDATE BETWEEN FECHA_INICIAL AND FECHA_FINAL)
AND V_COD_IMP=IMP_VIG_IMPU_CODIGO
AND PERIODO<>5
AND ROWNUM=1;
Esta instrucción funciona bien hasta el ultimo día del corte, por ejemplo el día hoy 31 de marzo ya no genera nada la selección, por lo que se desconoce el periodo y por consiguiente no se generan algunos conceptos que dependen directamente de dicho periodo.
Pareciera que el between comparara fechas pero no tomara el último
¿Con qué comando puedo comparar si la fecha del sistema esta dentro de un rango te niendo en cuenta el ultimo?

2 respuestas

Respuesta
1
Más bien parece que el problema puede ser de formato, pues el between incluye el último valor.
Prueba a pasar a carácter las fechas y las comparas de esa forma:
where to_char(sysdate,'dd/mm/yyyy') between to_char(fecha_inicial,'dd/mm/yyyy') and ...
Yo creo que ese es el problema.
Respuesta
Vamos a probar una chapucilla, que a lo mejor lo has pensado ya... pero bueno te lo tengo que plantear antes de buscar otra función tipo (months_between) o alguna parecida...
Haz lo siguiente:
En el where: ((sysdate + 1) between fecha1 and fecha2)
A ver que pasa.
No he podido probarlo porque tengo mucho lio... y no puedo ahora mismo disponer de una b.de para probar a ver que devuelve, osea que no está corroborada la sintaxis... en caso de fallo... intenta, siguiendo los estándares de programación en sql, recomponerla bien.
Espero respuesta tuya.
P.D: Prueba a hacer la consulta con 31, por ejemplo y luego prueba a realizar la consulta con 1. Si el resultado es el mismo... hablamos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas