


Bagaimana untuk Mengira Perbezaan Tarikh Antara Baris Berturut-turut dalam SQL?
Jan 08, 2025 am 08:36 AMMenentukan 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:
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
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:
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;
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?
