SELECT WEEK('2008-01-01'); // 0; SELECT WEEK('2008-01-07'); // 1; SELECT WEEK('2008-02-03'); // 4; SELECT WEEK('2008-12-31'); // 52;
WEEK ne compte que les semaines complètes.
Certains vont dire, mais non la première semaine c'est la 0.
Non, non, en voici la preuve
SELECT DAYOFWEEK('2008-01-01'), # 3 DAYOFWEEK('2007-01-01'), # 2 DAYOFWEEK('2006-01-01'), # 1 <- ICI l'année commence le premier jour de la semaine DAYOFWEEK('2005-01-01'), # 7 DAYOFWEEK('2004-01-01'), # 6 DAYOFWEEK('2003-01-01'), # 5 DAYOFWEEK('2002-01-01'); # 4
Du coup
SELECT WEEK('2008-01-01'), # 0 WEEK('2007-01-01'), # 0 WEEK('2006-01-01'), # 1 <-on est bien la première semaine complète de l'année WEEK('2005-01-01'), # 0 WEEK('2004-01-01'), # 0 WEEK('2003-01-01'); # 0
et du coup
SELECT WEEK('2008-12-31'), # 52 WEEK('2007-12-31'), # 52 WEEK('2006-12-31'), # 53 WEEK('2005-12-31'), # 52 WEEK('2004-12-31'), # 52 WEEK('2003-12-31'); # 52
En fait maintenant il y a une deuxième paramètre.
WEEK(date ,mode)
Voici ce que dit le manuel.
Avec deux arguments, la fonction WEEK() vous permet de spécifier si les semaines commencent le Dimanche ou le Lundi et la valeur retournée sera dans l'intervalle 0-53 ou bien 1-52. Lorsque l'argument mode est omis, la valeur de la variable default_week_format (ou 0 en MySQL 4.0 ou plus ancien) est utilisée.
Voici un tableau explicatif sur le fonctionnement du second argument : Valeur Signification
- 0 : La semaine commence le Dimanche;l'intervalle de valeur de retour va de 0 à !2; la semaine 1 est la première semaine de l'année
- 1 : La semaine commence le Lundi;l'intervalle de valeur de retour va de 0 à !2; la semaine 1 est la première semaine de l'année qui a plus de trois jours
- 2 : La semaine commence le Dimanche;l'intervalle de valeur de retour va de 1 à !2; la semaine 1 est la première semaine de l'année
- 3 : La semaine commence le Lundi;l'intervalle de valeur de retour va de 1 à !2; la semaine 1 est la première semaine de l'année qui a plus de trois jours
- 4 : La semaine commence le Dimanche;l'intervalle de valeur de retour va de 0 à !2; la semaine 1 est la première semaine de l'année qui a plus de trois jours
- 5 : La semaine commence le Lundi;l'intervalle de valeur de retour va de 0 à !2; la semaine 1 est la première semaine de l'année
- 6 : La semaine commence le Dimanche;l'intervalle de valeur de retour va de 1 à !2; la semaine 1 est la première semaine de l'année qui a plus de trois jours
- 7 : La semaine commence le Lundi;l'intervalle de valeur de retour va de 1 à !2; la semaine 1 est la première semaine de l'année
Le mode 3 est disponible depuis MySQL 4.0.5. Le mode 4 est disponible depuis MySQL 4.0.17.








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire