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:
Gracias desde ya // 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