首頁 >資料庫 >mysql教程 >如何計算SQL中連續行之間的日期差異?

如何計算SQL中連續行之間的日期差異?

Linda Hamilton
Linda Hamilton原創
2025-01-08 08:36:40395瀏覽

How to Calculate the Date Difference Between Consecutive Rows in SQL?

決定 SQL 中連續記錄之間的時間間隔

本教學示範如何計算 SQL 表中給定帳號的連續行之間的日期差異。

方法一:子查詢方法

此查詢使用子查詢計算日期差異:

<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>

說明:

外部查詢選擇 ID、AccountNumber、Date、計算的 NextDate 以及日期差。 內部查詢透過尋找大於目前行日期且屬於相同帳戶的最小日期來標識每行的下一個日期 (NextDate)。 DATEDIFF(day, Date, NextDate) 計算天數差異。

方法二:自連接技術

更有效的替代方案是利用自連接:

<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>

此方法使用 LEFT JOIN 將每一行與具有相同帳號和較晚日期的後續行進行比較。 MIN(T2.Date) 找出下一個日期,DATEDIFF(day, ...) 計算天數差異。 沒有後續行的行將具有 NULLNextDateDateDifference 值。 請注意,DATEDIFF 的第一個參數指定差異單位(此處為「天」)。 根據需要進行調整(例如“月”、“年”)。

以上是如何計算SQL中連續行之間的日期差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn