Maison > base de données > tutoriel mysql > Comment générer une liste de dates sur plusieurs plages de dates en SQL ?

Comment générer une liste de dates sur plusieurs plages de dates en SQL ?

Susan Sarandon
Libérer: 2025-01-03 06:02:39
original
566 Les gens l'ont consulté

How to Generate a List of Dates Across Multiple Date Ranges in SQL?

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

Générer des dates entre deux dates données est une tâche courante en SQL. Cependant, générer des dates sur plusieurs plages de dates peut présenter des défis.

Considérez le tableau d'entrée suivant contenant deux plages de dates :

| ID | START_DATE | END_DATE   |
|-----|------------|------------|
| 101 | April, 01 2013 | April, 10 2013 |
| 102 | May, 10 2013 | May, 12 2013 |
Copier après la connexion

Le résultat souhaité serait une liste de dates pour chaque plage :

| 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 |
Copier après la connexion

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
Copier après la connexion

Cette requête exploite un sous-requête pour générer une liste de décalages de date de 0 à la plage de dates maximale dans la table. Il joint ensuite cette sous-requête à la table d'entrée à l'aide de la colonne START_DATE et vérifie si chaque décalage se situe dans la plage définie par la colonne END_DATE. Les résultats sont triés par ID et les dates générées (dt).

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal