Menjana Tarikh antara Julat Tarikh Berbilang
Masalah menjana tarikh antara dua tarikh yang diberikan agak biasa. Walau bagaimanapun, apabila berurusan dengan berbilang julat tarikh, penyelesaiannya boleh menjadi lebih kompleks. Soalan pada StackOverflow ini membentangkan satu senario sedemikian dan menyediakan penyelesaian yang elegan menggunakan paparan sebaris dan pertanyaan rekursif:
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
Paparan sebaris mengira julat delta dari 1 hingga perbezaan maksimum antara permulaan dan akhir tarikh mana-mana julat dalam jadual menggunakan pertanyaan rekursif. Julat delta ini kemudiannya digunakan dalam pertanyaan utama untuk menjana semua tarikh antara tarikh mula dan tamat setiap julat.
Pertanyaan mula-mula menyertai jadual t_dates dengan paparan sebaris, menjana semua pasangan permulaan yang mungkin tarikh dan delta. Ia kemudian menapis pasangan tersebut di mana tarikh yang terhasil akan melebihi tarikh tamat julat yang sepadan. Akhir sekali, pertanyaan mengisih keputusan mengikut ID dan tarikh.
Penyelesaian ini fleksibel dan boleh digunakan untuk menjana tarikh bagi sebarang bilangan julat tarikh. Ia memanfaatkan kuasa pertanyaan rekursif untuk menyediakan cara yang ringkas dan cekap untuk menyelesaikan masalah ini.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Tarikh Merentasi Berbilang Julat Tarikh dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!