Maison >base de données >tutoriel mysql >Comment calculer la différence de date entre des lignes consécutives dans SQL ?
Détermination de l'intervalle de temps entre les enregistrements séquentiels en SQL
Ce tutoriel montre comment calculer la différence de date entre des lignes successives pour un numéro de compte donné dans une table SQL.
Méthode 1 : Approche de sous-requête
Cette requête calcule la différence de date à l'aide d'une sous-requête :
<code class="language-sql">SELECT ID, AccountNumber, Date, NextDate, DATEDIFF(day, Date, NextDate) AS DateDifference FROM ( SELECT ID, AccountNumber, Date, ( SELECT MIN(Date) FROM YourTable T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable T1 ) AS T</code>
Explication :
La requête externe sélectionne l'ID, le AccountNumber, la Date, la NextDate calculée et la différence de date. La requête interne identifie la date suivante (NextDate
) pour chaque ligne en recherchant la date minimale supérieure à la date de la ligne actuelle et appartenant au même compte. DATEDIFF(day, Date, NextDate)
calcule la différence en jours.
Méthode 2 : Technique d'auto-adhésion
Une alternative plus efficace utilise une auto-jointure :
<code class="language-sql">SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DateDifference FROM YourTable T1 LEFT JOIN YourTable T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>
Cette approche utilise un LEFT JOIN
pour comparer chaque ligne avec les lignes suivantes ayant le même numéro de compte et une date ultérieure. MIN(T2.Date)
trouve la date suivante et DATEDIFF(day, ...)
calcule la différence en jours. Les lignes sans ligne suivante auront une valeur NULL
pour NextDate
et DateDifference
. Notez que le premier argument de DATEDIFF
spécifie l'unité de différence (ici, « jour »). Ajustez si nécessaire (par exemple, « mois », « année »).
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!