Maison >base de données >tutoriel mysql >Comment identifier des plages de dates consécutives dans SQL ?
Pour identifier des plages de dates consécutives dans une colonne contenant une séquence de dates, SQL peut être utilisé pour extraire efficacement les dates de début et de fin de chaque plage distincte.
Considérons l'ensemble de données suivant :
InfoDate 2013-12-04 2013-12-05 2013-12-06 2013-12-09 2013-12-10 2014-01-01 2014-01-02 2014-01-03 2014-01-06 2014-01-07 2014-01-29 2014-01-30 2014-01-31 2014-02-03 2014-02-04
L'objectif est d'extraire les dates de début et de fin de chaque plage de dates consécutives, ce qui donne :
StartDate EndDate 2013-12-04 2013-12-06 2013-12-09 2013-12-10 2014-01-01 2014-01-03 2014-01-06 2014-01-07 2014-01-29 2014-01-31 2014-02-03 2014-02-04
Une solution SQL simplifiée et efficace peut être conçue en suivant les étapes suivantes :
Le SQL la requête pour y parvenir est :
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)
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!