Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Tarikh Merentasi Berbilang Julat Tarikh dalam SQL?

Bagaimana untuk Menjana Tarikh Merentasi Berbilang Julat Tarikh dalam SQL?

Patricia Arquette
Lepaskan: 2025-01-04 10:12:34
asal
681 orang telah melayarinya

How to Generate Dates Across Multiple Date Ranges in SQL?

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

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!

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