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
127 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!

sumber:php.cn
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