Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema fecha, mes natural

Estas en el tema de Problema fecha, mes natural en el foro de Oracle en Foros del Web. Hola, tengo una base de datos de una tienda y quiero calcular el punto muerto (la tienda esta en punto muerto cuando lleva 3 meses ...
  #1 (permalink)  
Antiguo 08/05/2015, 02:46
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Problema fecha, mes natural

Hola, tengo una base de datos de una tienda y quiero calcular el punto muerto (la tienda esta en punto muerto cuando lleva 3 meses sin beneficios). Para ello tengo una función a la que le doy como parámetro de entrada una fecha to_date. He visto por internet que podría poner algo como "add_months(fecha,-1)", pero no me convence porque, por ejemplo, si estoy en enero con esa línea creo que daría error (al estar en el mes 01 y restarle 1 se quedaría en mes 0 ).

Había pensado en hacer una función a parte que me calcule, dada una fecha, los dos meses anteriores, pero no sé bien como hacerlo para que sea correcto, tengo un poco de lío, si alguien me puede guiar sobre cómo podría hacerlo se lo agradecería.

Lo primero que pensé fue hacer esto:
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION punto_muerto(fecha DATE)
  2. RETURN BOOLEAN IS res BOOLEAN;
  3. fecha1 DATE;
  4. fecha2 DATE;
  5.  
  6. BEGIN
  7.  fecha1 := add_months(fecha,-1);
  8.  fecha2 := add_months(fecha,-2);
  9.  
  10.  
  11. IF ( ( BENEFICIO_MENSUAL(fecha) - GASTO_MENSUAL(fecha) ) < 0 AND ( BENEFICIO_MENSUAL(fecha1) - GASTO_MENSUAL(fecha1) ) < 0 AND
  12.                   ( BENEFICIO_MENSUAL(fecha2) - GASTO_MENSUAL(fecha2) ) < 0) THEN res:=TRUE;
  13. ELSE res:=FALSE;
  14.     END IF;
  15. RETURN res;
  16. END punto_muerto;

En fin, como podéis comprobar, me tiene muy liada esta función. Ignorad el BOOLEAN ya se que no se puede poner y lo tengo que cambiar.

Última edición por gnzsoloyo; 08/05/2015 a las 08:38
  #2 (permalink)  
Antiguo 08/05/2015, 08:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Problema fecha, mes natural

La función add_months funciona perfectamente blueMuffin010.

Cuando le das -5 y estas en enero, te devuelve agosto del año anterior. Ese tipo de validaciones las maneja muy bien, asi que te recomiendo hacer uso de ella y no inventarse nuevas formas complejas de hacer lo que quieres y que posiblemente se te queden cosas por fuera

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/05/2015, 08:58
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Problema fecha, mes natural

Ah vale, entonces perfecto. Muchas gracias ^^

Etiquetas: fecha, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:26.