Fonction MySQL WEEK()
La fonction `WEEK()` de MySQL est utilisée pour extraire le numéro de semaine d'une date donnée. Il permet d'organiser et d'analyser les données sur la base d'intervalles hebdomadaires.
Utilisation
La fonction `WEEK()` est généralement utilisée lorsque vous devez regrouper ou filtrer des enregistrements par semaine. Elle renvoie un entier représentant le numéro de semaine de l'année pour une date donnée.
sql
WEEK(date, [mode])
Dans cette syntaxe, `date` est la date à partir de laquelle le numéro de semaine doit être extrait, et `mode` est un argument optionnel qui définit le jour de départ de la semaine (par exemple, dimanche ou lundi). Si aucun mode n'est spécifié, le mode par défaut est le mode 0, dans lequel la semaine commence le dimanche.
Valeurs du mode
- 0: La semaine commence le dimanche. La semaine 1 est la première semaine avec un dimanche cette année.
- 1: La semaine commence le lundi. Conformément à la norme ISO-8601, la semaine 1 est la première semaine comportant au moins 4 jours dans la nouvelle année.
- 2: La semaine commence le dimanche. La semaine 1 est la première semaine dont plus de la moitié des jours se situent dans la nouvelle année.
- 3: La semaine commence le lundi. La semaine 1 est la première semaine dont plus de la moitié des jours se situent dans la nouvelle année.
- 4: La semaine commence le dimanche. La semaine 1 est la première semaine avec au moins 4 jours dans la nouvelle année.
- 5: La semaine commence le lundi. La semaine 1 est la première semaine avec un lundi de cette année.
- 6: La semaine commence le samedi. La semaine 1 est la première semaine avec un samedi cette année.
- 7: La semaine commence le dimanche. La semaine 1 est la première semaine avec un dimanche cette année.
Exemples
1. Extraction de la semaine de base
sql
SELECT WEEK('2023-10-04');
Cet exemple renvoie le numéro de semaine de la date `2023-10-04`. Par défaut, la semaine commence le dimanche.
2. Extraction de la semaine avec mode
sql
SELECT WEEK('2023-10-04', 1);
Ici, la fonction renvoie le numéro de semaine avec un mode de `1`, ce qui signifie que la semaine commence le lundi selon la norme ISO-8601.
3. Utilisation de WEEK() dans une requête
sql
SELECT COUNT(*)
FROM orders
WHERE WEEK(order_date) = WEEK(CURDATE());
Cet exemple compte le nombre de commandes effectuées dans la semaine en cours, en utilisant `WEEK()` pour comparer le numéro de semaine de `order_date` avec le numéro de semaine de la date en cours.
Conseils et bonnes pratiques
- Choisissez le bon mode. Utilisez l'argument `mode` pour vous aligner sur votre logique métier, en particulier lorsque vous traitez des données internationales.
- Calculs hebdomadaires cohérents. Utilisez le même `mode` dans toutes vos requêtes pour maintenir la cohérence des calculs hebdomadaires.
- Considérations relatives à la performance. Lorsque vous utilisez `WEEK()` dans les clauses `WHERE`, pensez à indexer la colonne date pour améliorer les performances de la requête.
- Des semaines de manutention s'étalant sur deux ans. Sachez que les modes de transport traitent différemment les semaines qui s'étendent sur deux ans ; assurez-vous que votre choix de mode de transport reflète la façon dont vous souhaitez que ces semaines soient traitées.
- Combinez avec d'autres fonctions de date. Utilisez `WEEK()` avec des fonctions comme `YEAR()` pour une analyse plus granulaire des données temporelles.
- Tenez compte des fuseaux horaires. Soyez attentif à la façon dont les fuseaux horaires peuvent affecter le calcul des dates si votre ensemble de données comprend des données internationales.