首页 >数据库 >mysql教程 >如何计算SQL中连续行之间的日期差异?

如何计算SQL中连续行之间的日期差异?

Linda Hamilton
Linda Hamilton原创
2025-01-08 08:36:40408浏览

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