Générer des dates dans plusieurs plages de dates
Lorsque l'exigence s'étend au-delà d'une seule plage de dates, générer toutes les dates dans plusieurs plages de dates présente un défi . Cet article aborde de tels scénarios et propose une solution efficace.
Le problème
Comme illustré dans le SQL Fiddle fourni, la tâche consiste à générer toutes les dates pour un ensemble donné. de plusieurs plages de dates, comme suit :
<br>ID START_DATE END_DATE<br>101 1er avril 2013 10 avril 2013<br>102 10 mai 2013 12 mai 2013<br>
La solution
La requête suivante répond à ce problème problème :
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
Décomposition de la solution
Exemple de sortie
Pour l'entrée fournie, la requête renvoie ce qui suit sortie :
<br>Dates d'identification<br>101 avril 01 2013<br>101 avril 02 2013<br>101 avril 03 2013<br>101 avril 04 2013<br>101 avril, 05 2013<br>101 avril 06 2013<br>101 avril 07 2013<br>101 avril 08 2013<br>101 avril 09 2013<br>101 avril 10 2013<br>102 mai 10 2013<br>102 mai 11 2013<br>102 mai 12 2013<br>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!