Maison  >  Article  >  base de données  >  Comment récupérer les enregistrements de la semaine en cours dans MySQL à l'aide de YEARWEEK() ?

Comment récupérer les enregistrements de la semaine en cours dans MySQL à l'aide de YEARWEEK() ?

DDD
DDDoriginal
2024-10-26 03:00:27969parcourir

How to Retrieve Records for the Current Week in MySQL Using YEARWEEK()?

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

  • YEARWEEK() calcule le numéro de semaine d'une date donnée, en tenant compte du jour de début de la semaine (lundi pour le paramètre '1').
  • CURDATE() récupère la date du jour.
  • La requête filtre ensuite les enregistrements où la valeur YEARWEEK() de la colonne de date correspond à la valeur YEARWEEK() de la date actuelle.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn