Question :
Vous devez extraire des plages de dates consécutives d'une table contenant un une seule colonne de dates non triées. Ces plages représentent des segments de temps qui nécessitent des dates de début et de fin pour remplir un objet de calendrier avec précision.
Solution :
Approche :
Pour résoudre ce problème en utilisant SQL, nous pouvons utiliser la méthode "gaps-and-islands". Cette méthode regroupe les dates consécutives par différence avec leur numéro de ligne, car cette valeur reste constante pour chaque séquence consécutive. Nous utilisons ensuite les fonctions MIN() et MAX() pour extraire les dates de début et de fin de chaque groupe.
Requête SQL :
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)
Explication :
Sortie :
Le tableau résultant doit contenir les éléments suivants columns :
Cette sortie fournit les dates de début et de fin pour chaque plage de dates consécutive, vous permettant de remplir votre objet de calendrier avec les informations de date nécessaires.
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!