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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-04 22:32:40150semak imbas

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

Menjana Tarikh Antara Berbilang Julat Tarikh

Apabila berurusan dengan berbilang julat tarikh, menjana semua tarikh dalam julat ini boleh menjadi satu cabaran. Mari kita terokai penyelesaian cekap yang mengendalikan senario ini.

Input yang disediakan terdiri daripada dua julat tarikh:

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

Matlamat kami adalah untuk menjana jadual output yang menyenaraikan semua tarikh dalam julat ini:

ID  Dates
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, 08 2013  
101 April, 09 2013  
101 April, 10 2013  
102   May, 10 2013  
102   May, 11 2013  
102   May, 12 2013

Untuk mencapai ini, kita boleh menggunakan SQL berikut pertanyaan:

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

Pertanyaan menjana semua kemungkinan perbezaan tarikh dalam julat tarikh maksimum dan kemudian menambahkannya pada setiap tarikh mula untuk menghasilkan output yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Tarikh Dalam Pelbagai Julat Tarikh Menggunakan 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