Détection de plages de dates consécutives avec SQL
Pour déterminer des plages de dates consécutives dans une colonne de dates, des techniques SQL peuvent être utilisées. Considérons un scénario dans lequel un objet de calendrier nécessite des informations sur les dates de début et de fin, et une colonne donnée contient une série de dates, dont certaines sont adjacentes et d'autres non. Pour identifier efficacement ces plages consécutives, une solution SQL robuste est recherchée.
Une approche consiste à exploiter la propriété invariante des séquences consécutives lors du regroupement par différence entre les valeurs de date et les numéros de ligne. Les dates de début et de fin au sein de chaque groupe sont ensuite récupérées respectivement comme valeurs minimale et maximale.
La requête SQL suivante illustre cette approche :
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM @d GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
Cette requête regroupe efficacement les dates par leur différence par rapport à leurs numéros de ligne correspondants, ce qui donne lieu à des groupes distincts pour chaque séquence consécutive. Les dates minimales et maximales au sein de chaque groupe sont ensuite sélectionnées pour représenter les plages de début et de fin.
En utilisant cette méthode, le résultat souhaité peut être obtenu, fournissant une liste complète de plages de dates consécutives triées par différence entre leurs dates de début et de fin.
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!