Oracle : Générer une série de date
Comment est-il possible de générer une séquence de date à partir d’une simple requête SQL sur un base de données Oracle ?
Pour comprendre le principe, il faut savoir que ce type de résultat est obtenu en deux étapes. La première est la génération d’un nombre défini de données à partir d’une requête SQL. La seconde est la transformation des données générées pour obtenir des dates.
Génération d’une série de données
Il existe plusieurs façons de générer un nombre défini de données qui peuvent être exploitées par la suite. Voici un exemple simple :
SELECT 1 FROM DUAL CONNECT BY LEVEL <= < n >
Avec n le nombre de données que vous souhaitez obtenir. Voici le résultat pour n = 3 :
1
———————-
1
1
1
Transformation de la série en séquence de dates
A partir des données générées précédemment, il est possible de créer une séquence de date avec ce type de requête SQL :
SELECT TRUNC(TO_DATE('20080415','yyyymmdd'),'MM')+ROWNUM -1 DATES FROM ( SELECT 1 FROM DUAL CONNECT BY LEVEL <= <n> )
Voici le résultat pour n = 3 :
DATES
————————-
01/04/08
02/04/08
03/04/08
Sources : Pour plus d’explications, vous pouvez vous référer au site internet qui m’a servi de référence : http://www.dba-oracle.com/t_test_data_date_generation_sql.htm. Vous y retrouverez entre autre deux façons différentes de générer une série de données.