MySQL : Récupération des enregistrements de la semaine en cours
Cette question tourne autour de la récupération des enregistrements d'une table MySQL en fonction d'une période de temps spécifique au sein de la semaine en cours. Explorons l'algorithme fourni et une requête MySQL plus efficace pour accomplir cette tâche.
L'algorithme initial impliquait de calculer le jour de la semaine, de déterminer la date du lundi précédent, puis de récupérer les enregistrements dans une plage de dates définie. Bien que cet algorithme fonctionne, il nécessite plusieurs étapes et calculs.
Heureusement, MySQL fournit des fonctions intégrées qui peuvent simplifier ce processus. La fonction YEARWEEK(), notamment avec le paramètre '1', permet de déterminer le numéro de semaine d'une date et d'une année données.
Requête efficace utilisant YEARWEEK()
La requête suivante utilise la fonction YEARWEEK() pour récupérer les enregistrements de la semaine en cours :
SELECT * FROM temp WHERE YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1)
Comprendre la requête
Réponse à la question supplémentaire
La requête fournie dans le la question ne sélectionne pas avec précision les enregistrements pour la semaine commençant à lundi. Il inclut le dimanche de la semaine précédente puisque le lundi est considéré comme le jour 1 de la semaine (format ISO). Pour remédier à cela, nous pouvons modifier la requête comme suit :
SELECT * FROM temp WHERE YEARWEEK(`date`, 7) = YEARWEEK(CURDATE(), 7)
Résumé
La fonction YEARWEEK() fournit un moyen simple et efficace de sélectionner des enregistrements en fonction de numéros de semaine dans MySQL. Cela élimine le besoin de calculs complexes et d’étapes intermédiaires. En comprenant la fonction YEARWEEK(), vous pouvez facilement obtenir des enregistrements pour la semaine en cours ou des périodes spécifiques au cours d'une année.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!