Maison > base de données > tutoriel mysql > Comment SQL peut-il identifier des plages de dates consécutives ?

Comment SQL peut-il identifier des plages de dates consécutives ?

Susan Sarandon
Libérer: 2025-01-01 01:20:08
original
978 Les gens l'ont consulté

How Can SQL Identify Consecutive Date Ranges?

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 :

  1. Créez une colonne de numéro de ligne : Attribuez un numéro de ligne à chaque date à l'aide de ROW_NUMBER() fonction. Cela crée un identifiant unique pour chaque date.
  2. Regrouper par différence de date : Regroupez les dates en fonction de la différence entre leurs numéros de ligne et la date elle-même. Cette différence est invariante au sein d'une séquence consécutive.
  3. Trouver les dates de début et de fin : Déterminez les dates minimales et maximales au sein de chaque groupe à l'aide des fonctions MIN() et MAX(). Celles-ci représenteront les dates de début et de fin de la plage consécutive.

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)
Copier après la connexion

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!

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