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
Lepaskan: 2025-01-05 16:11:43
asal
799 orang telah melayarinya

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

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!

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