Lorsque vous traitez plusieurs plages de dates, générer toutes les dates dans ces plages peut être un défi. Explorons une solution efficace qui gère ce scénario.
L'entrée fournie se compose de deux plages de dates :
ID START_DATE END_DATE 101 April, 01 2013 April, 10 2013 102 May, 10 2013 May, 12 2013
Notre objectif est de générer un tableau de sortie qui répertorie toutes les dates comprises dans ces plages :
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
Pour y parvenir, nous pouvons utiliser la requête SQL suivante :
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
La requête génère tous les différences de date dans la plage de dates maximale, puis les ajoute à chaque date de début pour produire le résultat souhaité.
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!