Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Tarikh Antara Baris Berturut-turut dalam SQL?
Menentukan Jurang Masa Antara Rekod Berjujukan dalam SQL
Tutorial ini menunjukkan cara mengira perbezaan tarikh antara baris berturut-turut untuk nombor akaun yang diberikan dalam jadual SQL.
Kaedah 1: Pendekatan Subkueri
Pertanyaan ini mengira perbezaan tarikh menggunakan subkueri:
<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>
Penjelasan:
Pertanyaan luar memilih ID, Nombor Akaun, Tarikh, Tarikh Seterusnya dikira dan perbezaan tarikh. Pertanyaan dalaman mengenal pasti tarikh seterusnya (NextDate
) untuk setiap baris dengan mencari tarikh minimum yang lebih besar daripada tarikh baris semasa dan tergolong dalam akaun yang sama. DATEDIFF(day, Date, NextDate)
mengira perbezaan hari.
Kaedah 2: Teknik Sertai Diri
Alternatif yang lebih cekap menggunakan gabungan sendiri:
<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>
Pendekatan ini menggunakan LEFT JOIN
untuk membandingkan setiap baris dengan baris berikutnya yang mempunyai nombor akaun yang sama dan tarikh kemudian. MIN(T2.Date)
mencari tarikh seterusnya dan DATEDIFF(day, ...)
mengira perbezaan hari. Baris tanpa baris berikut akan mempunyai nilai NULL
untuk NextDate
dan DateDifference
. Ambil perhatian bahawa hujah pertama DATEDIFF
menentukan unit perbezaan (di sini, 'hari'). Laraskan mengikut keperluan (mis., 'bulan', 'tahun').
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Tarikh Antara Baris Berturut-turut dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!