Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Semua Tarikh Dalam Pelbagai Julat Tarikh dalam SQL?

Bagaimana untuk Menjana Semua Tarikh Dalam Pelbagai Julat Tarikh dalam SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 16:11:43802semak imbas

How to Generate All Dates Within Multiple Date Ranges in SQL?

Menjana Tarikh Dalam Julat Tarikh Berbilang

Apabila keperluan melangkaui julat tarikh tunggal, menjana semua tarikh dalam berbilang julat tarikh memberikan cabaran . Artikel ini menangani senario sedemikian, menyediakan penyelesaian yang berkesan.

Masalahnya

Seperti yang digambarkan dalam SQL Fiddle yang disediakan, tugasnya adalah untuk menjana semua tarikh untuk set tertentu daripada berbilang julat tarikh, seperti berikut:


ID START_DATE END_DATE
101 April, 01 2013 April, 10 2013
102 Mei, 10 2013 Mei, 12 2013

Penyelesaian>>

Pertanyaan berikut menangani perkara ini masalah:

select 
  A.ID, 
  A.START_DATE+delta dt
from 
  t_dates A, 
  (
     select level-1 as delta 
     from dual 
     connect by level-1 <= (
       select max(end_date - start_date) from t_dates
     )
  )
where A.START_DATE+delta <= A.end_date
order by 1, 2

Pecahan Penyelesaian

  • Subkueri mencipta struktur hierarki (menggunakan CONNECT BY) untuk menjana urutan nombor sehingga tempoh maksimum julat tarikh.
  • Pertanyaan utama menyertai urutan ini dengan tarikh input julat, menambah nombor jujukan pada tarikh mula untuk menjana semua tarikh yang mungkin.
  • Klausa WHERE memastikan bahawa hanya tarikh yang sah dalam setiap julat dijana.
  • Klausa ORDER BY mengisih output mengikut ID dan kemudian mengikut tarikh.

Contoh Output

Untuk input yang disediakan, pertanyaan mengembalikan output berikut:


Tarikh ID
101 April, 01 2013
101 April , 02 2013
101 April, 03 2013
101 April, 04 2013
101 April, 05 2013
101 April, 06 2013
101 April, 07 2013
101 April, 09, 08 08 April 2013
101 April, 10 2013
102 Mei, 10 2013
102 Mei, 11 2013
102 Mei, 12 2013
🎜

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Tarikh Dalam Pelbagai Julat Tarikh dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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