Maison >base de données >tutoriel mysql >Comment générer toutes les dates dans plusieurs plages de dates à l'aide de SQL ?

Comment générer toutes les dates dans plusieurs plages de dates à l'aide de SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 22:32:40186parcourir

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

Générer des dates entre plusieurs plages de dates

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn