Soalan:
Anda perlu mengekstrak julat tarikh berturut-turut daripada jadual yang mengandungi lajur tunggal tarikh yang tidak diisih. Julat ini mewakili segmen masa yang memerlukan tarikh mula dan tamat untuk mengisi objek kalendar dengan tepat.
Penyelesaian:
Pendekatan:
Untuk menyelesaikan masalah ini menggunakan SQL, kita boleh menggunakan kaedah "jurang-dan-pulau". Kaedah ini mengumpulkan tarikh berturut-turut mengikut perbezaannya daripada nombor barisnya, kerana nilai ini kekal malar untuk setiap jujukan berturut-turut. Kami kemudian menggunakan fungsi MIN() dan MAX() untuk mengekstrak tarikh mula dan tamat setiap kumpulan.
Pertanyaan SQL:
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM @d GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
Penjelasan:
Output:
Jadual yang terhasil hendaklah mengandungi yang berikut lajur:
Output ini menyediakan tarikh mula dan tamat untuk setiap julat tarikh berturut-turut, membolehkan anda mengisi objek kalendar anda dengan maklumat tarikh yang diperlukan.
Atas ialah kandungan terperinci Bagaimana Mengenalpasti dan Mengeluarkan Julat Tarikh Berturut-turut dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!