決定 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, ...)
計算天數差異。 沒有後續行的行將具有 NULL
和 NextDate
的 DateDifference
值。 請注意,DATEDIFF
的第一個參數指定差異單位(此處為「天」)。 根據需要進行調整(例如“月”、“年”)。
以上是如何計算SQL中連續行之間的日期差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!