Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/09/2013, 14:48
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problemas con fechas en php y mySQL

Este es un tema un tanto complicado, porque el valor de "semana" inicial del año es distinto en función de la cantidad de días que haya del presente año en esa semana.
De hecho, MySQL tiene una función específica para determinar su valor: WEEK(), que puede serte útil.
Mira en el manual de referencia de MYSQL.
Dependiendo de si se toma como base que la semana comience el Domingo o el Lunes, la función puede devolver diferentes resultados:
Cita:
EEK(date[,mode])

Esta función retorna el número de semana para date. La forma de dos argumentos de WEEK() le permite especificar si la semana comienza en lunes o domingo y si el valor de retorno debe estar en el rango de 0 a 53 o de 1 a 53. Si el argumento mode se omite en MySQL 5.0, el valor de la variable de sistema default_week_format se usa. Consulte Sección 5.3.3, “Variables de sistema del servidor”.

La siguiente tabla describe cómo funciona el argumento mode :
Primer día
Modo de semana Rango Semana 1 es la primera semana...
0 Domingo 0-53 con un domingo en este año
1 Lunes 0-53 con más de 3 días este año
2 Domingo 1-53 con un domingo este año
3 Lunes 1-53 con más de 3 días este año
4 Domingo 0-53 con más de 3 días este año
5 Lunes 0-53 con un lunes en este año
6 Domingo 1-53 con más de 3 días este año
7 Lunes 1-53 con un lunes en este año
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     WEEK('2013-01-01') Semana1,
  3.     ->     WEEK('2013-01-01',0)Semana2,
  4.     ->     WEEK('2013-01-01',1) Semana3,
  5.     ->     WEEK('2013-01-01',2) Semana4,
  6.     ->     WEEK('2013-01-01',3) Semana5,
  7.     ->     WEEK('2013-01-01',4) Semana6,
  8.     ->     WEEK('2013-01-01',5) Semana7,
  9.     ->     WEEK('2013-01-01',6) Semana8,
  10.     ->     WEEK('2013-01-01',7) Semana9;
  11. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  12. | Semana1 | Semana2 | Semana3 | Semana4 | Semana5 | Semana6 | Semana7 | Semana8 | Semana9 |
  13. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  14. |       0 |       0 |       1 |      53 |       1 |       1 |       0 |       1 |      53 |
  15. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  16. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/09/2013 a las 17:41