Maison > base de données > tutoriel mysql > Comment identifier efficacement les plages de dates qui se chevauchent dans MySQL ?

Comment identifier efficacement les plages de dates qui se chevauchent dans MySQL ?

Barbara Streisand
Libérer: 2025-01-18 08:16:11
original
715 Les gens l'ont consulté

How to Efficiently Identify Overlapping Date Ranges in MySQL?

Algorithme de comparaison de plages de dates MySQL

Dans MySQL, nous devons souvent déterminer si une plage de dates donnée chevauche une plage de dates dans la liste stockée. Pour résoudre ce problème, considérons la relation entre deux plages de dates :

  • Contient entièrement : Une plage tombe complètement dans une autre plage.
  • Début ou fin de chevauchement : Une plage partage une limite avec une autre plage.
  • Sans chevauchement : Il n'y a pas de limites partagées, une plage se termine avant que l'autre ne commence.

Identifier les plages qui se chevauchent

La clé est de trouver les plages qui ne se chevauchent pas. En définissant cette condition de manière négative, nous pouvons nous concentrer sur les critères suivants :

  • L'heure de début est postérieure à l'heure de fin de la plage cible.
  • L'heure de fin est antérieure à l'heure de début de la plage cible.

En SQL, le résultat de la conversion de cette logique en forme de requête est le suivant :

<code class="language-sql">SELECT *
FROM periods
WHERE NOT (range_start > @check_period_end OR range_end < @check_period_start)</code>
Copier après la connexion

En inversant la logique, nous pouvons récupérer les plages qui se chevauchent comme suit :

<code class="language-sql">SELECT *
FROM periods
WHERE range_start <= @check_period_end AND range_end >= @check_period_start</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal