Détecter des plages de dates consécutives à l'aide de SQL
Introduction
Lors de la préparation des données pour les applications de calendrier, il est souvent nécessaire d'extraire des plages de dates consécutives à partir d'une séquence de dates. Cette tâche peut être difficile, surtout lorsque les dates ne sont pas espacées de manière cohérente.
Solution utilisant SQL
Pour résoudre ce problème à l'aide de SQL, nous pouvons utiliser l'approche suivante :
Requête SQL
La requête SQL suivante implémente l'approche ci-dessus :
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM table_name GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
Résultat
La requête produira ce qui suit sortie :
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 |
Cette sortie fournit les dates de début et de fin de toutes les plages de dates consécutives dans les données d'origine.
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!