Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Tarikh Antara Rekod Berturut-turut dalam Pangkalan Data Akses Menggunakan SQL?

Bagaimana untuk Mengira Perbezaan Tarikh Antara Rekod Berturut-turut dalam Pangkalan Data Akses Menggunakan SQL?

Barbara Streisand
Barbara Streisandasal
2025-01-08 08:17:41967semak imbas

How to Calculate Date Differences Between Consecutive Records in an Access Database Using SQL?

Mengira Perbezaan Tarikh Antara Rekod Berjujukan dalam Pangkalan Data Akses menggunakan SQL

Menganalisis data temporal selalunya melibatkan penentuan masa berlalu antara entri berturut-turut. Artikel ini menunjukkan cara mengira perbezaan tarikh antara rekod berturut-turut berkongsi nombor akaun yang sama dalam pangkalan data Access menggunakan SQL.

Kaedah 1:

Pertanyaan SQL berikut mengira perbezaan tarikh untuk rekod berturut-turut yang dikaitkan dengan nombor akaun 1001:

<code class="language-sql">SELECT  T1.ID, 
        T1.AccountNumber, 
        T1.Date, 
        MIN(T2.Date) AS NextDate, 
        DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDifference
FROM    YourTable AS T1
LEFT JOIN YourTable AS T2
    ON T1.AccountNumber = T2.AccountNumber
    AND T2.Date > T1.Date
GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>

Pendekatan ini menggunakan LEFT JOIN untuk mengenal pasti tarikh berikutnya bagi setiap rekod dan kemudian menggunakan fungsi DATEDIFF untuk mengira perbezaan hari.

Kaedah 2:

Sebagai alternatif, pertanyaan ini mencapai hasil yang sama:

<code class="language-sql">SELECT  ID,
        AccountNumber,
        Date,
        NextDate,
        DATEDIFF("D", Date, NextDate) AS DaysDifference
FROM    (   SELECT  ID, 
                    AccountNumber,
                    Date,
                    (   SELECT  MIN(Date) 
                        FROM    YourTable AS T2
                        WHERE   T2.AccountNumber = T1.AccountNumber
                        AND     T2.Date > T1.Date
                    ) AS NextDate
            FROM    YourTable AS T1
        ) AS T;</code>

Kaedah ini menggunakan subkueri untuk mencari tarikh seterusnya bagi setiap rekod sebelum mengira perbezaan tarikh.

Contoh Output (Nombor Akaun 1001):

Kedua-dua pertanyaan menghasilkan set hasil yang serupa:

AccountNumber Date DaysDifference
1001 10/9/2011 2
1001 12/9/2011 8
1001 20/9/2011 NULL

Nilai NULL menunjukkan bahawa tiada rekod berikutnya untuk entri terakhir. Ingat untuk menggantikan "YourTable" dengan nama sebenar jadual anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Tarikh Antara Rekod Berturut-turut dalam Pangkalan Data Akses Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn