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