J'ai la requête suivante pour obtenir les rendez-vous qui doivent être rappelés une fois par mois (s'ils ne sont pas encore terminés). Je souhaite obtenir les enregistrements des 30, 60, 90, 120, etc. à partir de la date actuelle.
SELECT a.* FROM appointments a WHERE DATEDIFF(CURDATE(), a.appointment_date) % 30 = 0
Existe-t-il un autre moyen d'y parvenir sans utiliser DATEDIFF ? Je souhaite améliorer les performances de cette requête.
Vous pouvez utiliser la requête suivante pour comparer la date d'un rendez-vous avec la date d'aujourd'hui.
Nous testons également si c'est le dernier jour du mois pour prendre rendez-vous en fin de mois. Par exemple, si nous sommes le 28 février (qui n'est pas une année bissextile), nous accepterons les dates de ce mois
>= 28
, qui sont le 29, le 30 et le 31, qui autrement seraient manquées.Cette méthode souffre du même problème que votre système actuel, à savoir que les rendez-vous du week-end seront manqués.
D’accord, mettons de côté les dates et les différences de dates pour l’instant. Du point de vue de cette question, la personne essaie de retrouver tous les rendez-vous passés et pas nécessairement un autre rendez-vous dans le futur. Comme un rendez-vous de suivi avec le médecin pour « revenir dans un mois et voir si les choses ont changé ». Cela m'a fait penser qu'il pourrait y avoir une pièce d'identité du patient dans le formulaire de rendez-vous. Cela pourrait donc déplacer la question vers une rétrospective d'il y a 30, 60 ou 90 jours pour voir s'il y a des rendez-vous prévus pour le futur. Les patients n’ont pas besoin d’un rappel téléphonique pour se présenter au cabinet s’ils ont déjà un rendez-vous.
Cela étant dit, je commencerais différemment et prendrais tous les patients qui ont eu un rendez-vous au cours des 90 derniers jours et verrais s'ils ont (ou n'ont pas) eu un rendez-vous de suivi sur le planning de suivi - en remontant. De cette façon, le personnel du cabinet peut contacter ledit patient pour qu'il soit inscrit sur le calendrier.
Commencez par obtenir le volume maximum de rendez-vous pour un patient donné au cours des 90 derniers jours. Si quelqu'un a pris rendez-vous il y a 90 jours et a eu un suivi il y a 59 jours, il se peut qu'il ne se soucie que du rendez-vous le plus récent pour s'assurer qu'il y a un suivi.
Maintenant, à partir de cette liste fixe et de cette date de début, tout ce qui nous importe, c'est combien de jours jusqu'à ce que la date actuelle soit la dernière date. Est-ce le jour X ? Utilisez simplement dateiff et triez. Vous pouvez voir visuellement combien de jours il y a. En essayant de les diviser en tranches de 30, 60 ou 90 jours, le simple fait de savoir combien de jours se sont écoulés depuis le dernier rendez-vous pourrait être aussi simple que de trier par ordre décroissant, en appelant d'abord les rendez-vous les plus anciens, plutôt que ceux qui viennent de se produire. Il est même possible de couper la liste d'appels après 20 jours et de ne toujours pas avoir de rendez-vous et d'être proche des 30 jours prévus.
Parfois, le simple fait de répondre à une question directe ne sert pas le bon objectif. J'espère pouvoir être plus précis sur les besoins en matière de résultat final souhaité. Encore une fois, ce qui précède signifie joindre le formulaire patient pour un appel de suivi afin de prendre rendez-vous.