Rumah > pangkalan data > tutorial mysql > Bagaimana Mengenalpasti dan Mengeluarkan Julat Tarikh Berturut-turut dalam SQL?

Bagaimana Mengenalpasti dan Mengeluarkan Julat Tarikh Berturut-turut dalam SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-03 05:34:38
asal
169 orang telah melayarinya

How to Identify and Extract Consecutive Date Ranges in SQL?

Mengenal pasti Julat Tarikh Berturut-turut dalam SQL

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)
Salin selepas log masuk

Penjelasan:

  • Klausa WITH mencipta ungkapan jadual biasa (CTE) bernama t.
  • CTE memilih lajur InfoDate d dan nombor baris i untuk setiap baris dalam jadual asal @d.
  • Data dikumpulkan mengikut InfoDate untuk memastikan keunikan dalam setiap jujukan berturut-turut.
  • Pernyataan SELECT mengira tarikh minimum dan maksimum untuk setiap kumpulan, mewakili tarikh mula dan tamat julat berturut-turut, masing-masing.
  • Fungsi DATEDIFF() digunakan untuk mengira perbezaan antara nombor baris dan tarikh, yang kekal malar dalam setiap urutan berturut-turut, dengan berkesan mengumpulkan tarikh berturut-turut bersama.

Output:

Jadual yang terhasil hendaklah mengandungi yang berikut lajur:

  • StartDate
  • EndDate

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan