Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/05/2004, 21:23
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Bueno ... yo guardaría en ese campo "fecha" que sólo ha de guardar un "mes" (no fecha completa) el nº de mes 1->Enero, 2->febrero y .. (no me gusta la idea .. pero bueno) el "MENSUAL" .. aunque si entiendo bien "MENSUAL" equivaldría a que ese registro tendría que contener 1,2,....12 por qué está en todos esos meses (¿es así?) ..

Lo que pretendo llegar es a "normalizar" esa base de datos para poder hacer consultas exclusivamente por ese rango que necesites de fechas (nº de mes) .. Por ejemplo:

CURDATE() obtiene la fecha actual y MONTH() el mes de una fecha dada (en nº) .. así que si lo aplicas a CURDATE() obtendrás el nº de mes actual para hacer tu cóndicional en tu sentencia SQL:

SELECT * FROM tabla WHERE fecha=MONTH(CURDATE())

(siempre y cuando fecha guarde tu "mes" como numero ..)

Si luego necesitas obtener esa fecha como "nombre legible" 1 -> Enero . .2 -> Febrero ." puedes usar un simple array en tu lenguaje de programación para usar el indice del dato obtenido de tu consulta a tu campo "fecha" en dicho array:

(ejemplo en php)
Código PHP:
$array_meses=array(1=>"Enero","Febrero",....);
echo 
$array_meses[$fecha]; 
Si entendí bien la consulta SQL que comentabas en tu mensaje inicial .. atendiendo a que las fechas las guardariamos (esos meses) como nº y el caso especial "MENSUAL" (en un campo VARCHAR (7) o similar .. no uno numérico por qué guardamos también ese string "mensual"):

SELECT * FROM tabla WHERE (fecha=MONTH(CURDATE()) OR fecha='MENSUAL') AND GERENCIA=1

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.