IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Remplir une table de dates


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut Remplir une table de dates
    Bonjour,

    Je désire remplir une table date (date) de toutes les dates de 2003 à aujourd'hui (du calendrier)..

    Insert into Date (date)
    SELECT...

    Je sais que en sql sous oracle
    pour généré 99 jours successifs :
    INSERT INTO laTable (laDate)
    SELECT TRUNC(DateDepart + ROWNUM)
    FROM DUAL
    CONNECT BY ROWNUM < 100

    Cependant "CONNECT BY ROWNUM" ne marche pas sous pgsql.. ou alors faudrait faire du pl/pgsql mais je ne sais pas faire.
    Donc si quelqu'un peut m'aider et me trouver une solution à mon problème, il sera le bienvenue.

    Merci,
    Cordialement,
    Michto

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par Michtopelo
    Bonjour,

    Je désire remplir une table date (date) de toutes les dates de 2003 à aujourd'hui (du calendrier)..

    Insert into Date (date)
    SELECT...

    Je sais que en sql sous oracle
    pour généré 99 jours successifs :
    INSERT INTO laTable (laDate)
    SELECT TRUNC(DateDepart + ROWNUM)
    FROM DUAL
    CONNECT BY ROWNUM < 100

    Cependant "CONNECT BY ROWNUM" ne marche pas sous pgsql.. ou alors faudrait faire du pl/pgsql mais je ne sais pas faire.
    Donc si quelqu'un peut m'aider et me trouver une solution à mon problème, il sera le bienvenue.

    Merci,
    Cordialement,
    Michto

    PostgreSQL supporte la syntaxe :

    date 'DATE' + integer 'INT'

    http://www.postgresql.org/docs/8.0/i...-datetime.html

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut
    Ok, on est d'accord.. mais ça m'avance pas trop pour remplir complètement une table de dates d'un calendrider. Je te remercie quand même pour ton aide.

    Cordialement,
    Michto

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par Michtopelo
    Ok, on est d'accord.. mais ça m'avance pas trop pour remplir complètement une table de dates d'un calendrider. Je te remercie quand même pour ton aide.

    Cordialement,
    Michto
    create or replace function dates(date,date) returns setof date as
    $BODY$DECLARE
    date_from alias for $1 ;
    date_to alias for $2 ;
    from_date date ;
    BEGIN
    from_date := date_from ;
    WHILE (from_date <= date_to) LOOP
    RETURN NEXT from_date ;
    from_date := from_date + 1 ;
    END LOOP ;

    RETURN ;
    END;
    $BODY$ LANGUAGE 'plpgsql'

    > select * from dates(date '2006-01-01',date '2006-01-10') ;
    dates
    ------------
    2006-01-01
    2006-01-02
    2006-01-03
    2006-01-04
    2006-01-05
    2006-01-06
    2006-01-07
    2006-01-08
    2006-01-09
    2006-01-10
    (10 rows)

    > insert into mytable(mydate) select * from dates('2003-01-01', current_date) ;

  5. #5
    jnore
    Invité(e)
    Par défaut
    tu peux créer une fonction comme suit aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE OR REPLACE FUNCTION "public"."fonctiondate" () RETURNS SETOF bit AS
    $body$
    /*
     
    */
     
    DECLARE
           a integer;
           b date;
    BEGIN
     
     a=1;
     b= '2003/01/01';
     
     while a<100 loop
     insert into budgets."table1" (datet) values (b+a);
     a=a+1;
     
    END loop;
     
    END;
    $body$
    LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

  6. #6
    jnore
    Invité(e)
    Par défaut
    après pour lancer la fonction tu tape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from fonctiondate()

Discussions similaires

  1. Remplir une table avec toutes les dates de l'année
    Par sialafrere dans le forum WinDev
    Réponses: 6
    Dernier message: 02/05/2008, 16h45
  2. comment remplir une table
    Par donny dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/07/2005, 11h22
  3. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22
  4. [SWT] Comment remplir une Table ?
    Par simon77 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 23/08/2004, 10h31
  5. remplir une table avec UTL_FILE.GET_LINE
    Par delphim dans le forum SQL
    Réponses: 9
    Dernier message: 12/03/2004, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo