Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/09/2006, 15:31
califa010
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 10 meses
Puntos: 5
Buenas, en el manual te muestra cómo obtener el índice del día en la semana a partir de una fecha:

Por ej:
Código PHP:
SELECT WEEKDAY('2006-09-28'); 
Esto te devuelve 3 -> Jueves . (0:Lunes,1:Martes,etc)

Pero me parece que no te hace falta averiguar cuándo empieza y termina la semana para lo que querés hacer (Si lo que querés hacer es obtener los registros de una semana).

Podrías hacer algo así:

Código PHP:
SELECT *
FROM tabla_agenda 
WHERE WEEK
(campo_fecha,3) = WEEK(CURDATE(),3); 
Estarías buscando en la tabla agenda todos los registros pertenecientes a la semana actual. Es decir, obtenés la semana correspondiente a el campo que tiene la fecha y la comparás con la semana correspondiente a la fecha actual. (si en vez de usar curdate() usaras alguna fecha arbitraria, obtendrías los de esa semana en particular).

Bueno, probalo, la verdad es que nunca usé estas funciones pero parece que vienen al pelo para lo que necesitás.

Una idea para optimizar las consultas (si planeás usar índices): podrías agregar además de un campo fecha, un campo semana y convertirlo en índice. De esa forma harías

Código PHP:
SELECT *
FROM tabla_agenda 
WHERE campo_semana 
WEEK(CURDATE(),3); 
Lo cual es más rápido porque a) estás usando un índice y b) no tendrías que hacer un escaneo completo de la tabla para saber a qué semana pertenece cada registro (para eso está campo_semana).

Lo único, es que tanto al hacer un insert como al hacer un update tendrías que guardar la semana además de la fecha (lo cual es en principio un poco redundante pero me parece que compensa si la mayoría de las consultas van a ser SELECTS y sobre todo si tenés pensado que la tabla puede llegar a crecer...)


Suerte
Califa