Maison > base de données > tutoriel mysql > Comment puis-je générer des dates sur plusieurs plages de dates dans Oracle ?

Comment puis-je générer des dates sur plusieurs plages de dates dans Oracle ?

Linda Hamilton
Libérer: 2025-01-02 15:06:42
original
941 Les gens l'ont consulté

How Can I Generate Dates Across Multiple Date Ranges in Oracle?

Gestion de plusieurs plages de dates pour la génération de dates

La génération de dates entre deux dates est couramment rencontrée dans divers scénarios de programmation. Bien que générer des dates pour une seule plage soit simple, étendre cette fonctionnalité pour gérer plusieurs plages peut poser des problèmes.

Considérez le tableau suivant où chaque ligne représente une plage de dates :

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

Le nombre attendu la sortie doit générer des dates individuelles dans chaque plage :

ID Dates
101 April 1, 2013
101 April 2, 2013
... ...
101 April 10, 2013
102 May 10, 2013
102 May 11, 2013
102 May 12, 2013

Oracle fournit une solution ingénieuse pour y parvenir résultat :

select 
  A.ID, 
  A.START_DATE + (delta - 1) 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 - 1) <= A.end_date
order by 1, 2;
Copier après la connexion

La colonne delta utilise la hiérarchie CONNECT BY d'Oracle pour générer une séquence d'entiers allant de 1 jusqu'à la différence maximale entre les dates de fin et de début dans la table. L'expression A.START_DATE (delta - 1) incrémente la date de début du delta approprié pour chaque enregistrement dans les résultats. La clause WHERE filtre les résultats qui dépassent la date de fin de la plage de dates actuelle.

Profitez de cette solution élégante pour générer des dates sur plusieurs plages dans Oracle !

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