Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2006, 10:40
Avatar de jpvilar
jpvilar
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 19 años, 11 meses
Puntos: 1
Exclamación Restar días+conflicto con meses

Hola ... antes que nada tengo que aclarar que no trabajé jamás con SQL Server ... toda mi experiencia se limita a PHP MySQL ...

Tengo que hacer un módulo en PowerBuilder y una base SQL para calcular y mostrar los cumpleaños de usuarios del sistema 3 días atrás de hoy y 6 días adelante ... hasta allí todo bien ... el problema es en el límite del mes ... no encuentro el modo de hacerlo ... en MySQL tenés la función DATE_FORMAT que te trae la parte que quieras de la fecha en formato fecha ... o sea podés comparar fecha con fecha (mm/dd) ... pero no encuentro como hacerlo ... copoio mi código para las búsquedas del día actual y para las búsquedas de mes atrás y mes adelante ... espero me puedan dar una mano ...

Código:
// CUMPLEN AÑOS HOY

SELECT dat_invar.legajo,   
         dat_invar.fecha_nacim,   
         leg.legajo,   
         leg.apellidos,   
         leg.nombres,
			m_rubros.cod_rubro,   
         m_rubros.nom_rubro 
    FROM dat_invar,   
         leg, dat_pers  LEFT JOIN m_rubros ON dat_pers.cod_prof = m_rubros.cod_rubro
   WHERE ( leg.legajo = dat_invar.legajo ) and
			( leg.legajo = dat_pers.legajo ) 
			and  
         ( ( leg.nivel = 'P' ) OR  
         ( leg.nivel = 'D' ))
			and ( MONTH(dat_invar.fecha_nacim) = MONTH(getDate()) and
			DAY(dat_invar.fecha_nacim) = DAY(getDate())) AND  
         leg.status = 'A'
ORDER BY leg.apellidos ASC,   
         leg.nombres ASC
Código:
// MES ANTERIOR O SIGUIENTE :ret_mes es una variable
SELECT dat_invar.legajo,   
         dat_invar.fecha_nacim,   
         leg.legajo,   
         leg.apellidos,   
         leg.nombres,
			m_rubros.cod_rubro,   
         m_rubros.nom_rubro 
    FROM dat_invar,   
         leg, dat_pers  LEFT JOIN m_rubros ON dat_pers.cod_prof = m_rubros.cod_rubro
   WHERE ( leg.legajo = dat_invar.legajo ) and
			( leg.legajo = dat_pers.legajo ) 
			and  
         ( ( leg.nivel = 'P' ) OR  
         ( leg.nivel = 'D' )) AND
			(MONTH(dat_invar.fecha_nacim) = MONTH(DATEADD ( MONTH , :ret_mes, getDate() ))) AND leg.status = 'A'
ORDER BY DAY(dat_invar.fecha_nacim) ASC, leg.apellidos ASC, leg.nombres ASC
Gracias desde ya
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE