MySQL possède un grand nombre de fonctions pour gérer les dates et le temps. Il est possible de récupérer le numéro calendaire d’une semaine avec la fonction week. Dimanche 5 avril nous étions semaine 14. La fonction week nous le confirme:
mysql> SELECT week('2009-04-05');
+--------------------+
| week('2009-04-05') |
+--------------------+
| 14 |
+--------------------+
Lundi 6 avril, nouvelle semaine, on passe donc à la semaine 15:
mysql> SELECT week('2009-04-06');
+--------------------+
| week('2009-04-06') |
+--------------------+
| 14 |
+--------------------+
Souci !!! Le résultat n’est pas celui espéré (14 au lieu de 15). En fait la fonction week prend un deuxième paramètre optionnel, qui permet de « régler la précision » (compter sur 53 ou 54 semaines, commencer la semaine un dimanche ou un lundi…) bref elle est complète et complexe…
Le réglage usuel est de mettre le deuxième paramètre à 3 ! ou alors d’utiliser la fonction WEEKOFYEAR.
mysql> SELECT weekofyear('2009-04-05');
+--------------------------+
| weekofyear('2009-04-05') |
+--------------------------+
| 14 |
+--------------------------+
mysql> SELECT weekofyear('2009-04-06');
+--------------------------+
| weekofyear('2009-04-06') |
+--------------------------+
| 15 |
+--------------------------+