2010-01-18 14 views
7

J'ai un oracle db et j'ai besoin d'un tableau contenant toutes les dates couvrant 2 ans; par exemple de 01/01/2011 à 01/01/2013.Séquence de date d'oracle?

D'abord, je pense d'une séquence mais apparemment le type pris en charge est le numéro, alors maintenant je suis à la recherche d'un moyen efficace de faire hourras

canular

Répondre

17

Si ce que vous voulez est de remplir un bloc des enregistrements avec des dates séquentielles, c'est assez facile à faire. La requête suivante génère dix dates. Tout ce que vous devez faire est d'ajuster la date de départ pour vous donner votre point de départ et le level dans la clause connect by pour s'adapter à votre point de fin, puis branchez-le dans une instruction insert.

SQL> select (trunc(sysdate, 'MM')-1) + level 
    2 from dual 
    3 connect by level <= 10 
    4/

(TRUNC(SY 
--------- 
01-JAN-10 
02-JAN-10 
03-JAN-10 
04-JAN-10 
05-JAN-10 
06-JAN-10 
07-JAN-10 
08-JAN-10 
09-JAN-10 
10-JAN-10 

10 rows selected. 

SQL> 
0

Dites par exemple, nous avons une table nommée: Datums avec la donnée de la colonne (date type) tableau contient:

21-01-2010 
22-01-2010 
01-12-2009 
06-10-2008 
03-07-2007 

vous pouvez utiliser:

SELECT * 
    FROM datums 
WHERE datum 
BETWEEN to_date('01/01/2009','mm/dd/yyyy') 
    AND to_date('12/31/2010','mm/dd/yyyy') 

résultat :

21-01-2010 
22-01-2010 
01-12-2009