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

SQL Oracle Discussion :

Récupérer les dates des WE pour une plage de temps donnée


Sujet :

SQL Oracle

  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer les dates des WE pour une plage de temps donnée
    Bonjour,

    Je souhaiterai récupérer via une clause SELECT, la liste des dates des WE (la date du samedi et la date du dimanche) entre 2 périodes (par exemple le 1er janvier 2008 et maintenant).
    Je tourne en rond depuis un moment et je ne sais toujours pas comment faire. En avez-vous une idée ? Est-ce au moins possible de faire ça ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    il existe plusieurs méthode.

    ex avec model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select to_char(d,'DL') from dual model 
    return updated rows
    dimension by (-1 x) 
    measures (trunc(trunc(sysdate,'Y')+7,'IW')-2 d)
    rules iterate (10000) until (iteration_number*7+6>sysdate-d[-1])
    (
    d[iteration_number*2]=d[-1]+iteration_number*7,
    d[iteration_number*2+1]=d[-1]+iteration_number*7+1
    )
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    TO_CHAR(D,'DL')              
    -----------------------------
    Saturday, January 05, 2008   
    Sunday, January 06, 2008     
    Saturday, January 12, 2008   
    Sunday, January 13, 2008     
    Saturday, January 19, 2008   
    Sunday, January 20, 2008     
    Saturday, January 26, 2008   
    Sunday, January 27, 2008     
    Saturday, February 02, 2008  
    Sunday, February 03, 2008    
    Saturday, February 09, 2008  
    Sunday, February 10, 2008    
    Saturday, February 16, 2008  
    Sunday, February 17, 2008    
    Saturday, February 23, 2008  
    Sunday, February 24, 2008    
    Saturday, March 01, 2008     
    Sunday, March 02, 2008       
    Saturday, March 08, 2008     
    Sunday, March 09, 2008       
    Saturday, March 15, 2008     
    Sunday, March 16, 2008       
    Saturday, March 22, 2008     
    Sunday, March 23, 2008       
    Saturday, March 29, 2008     
    Sunday, March 30, 2008       
    Saturday, April 05, 2008     
    Sunday, April 06, 2008       
    Saturday, April 12, 2008     
    Sunday, April 13, 2008       
    Saturday, April 19, 2008     
    Sunday, April 20, 2008       
    Saturday, April 26, 2008     
    Sunday, April 27, 2008       
    Saturday, May 03, 2008       
    Sunday, May 04, 2008         
    Saturday, May 10, 2008       
    Sunday, May 11, 2008         
    Saturday, May 17, 2008       
    Sunday, May 18, 2008         
    Saturday, May 24, 2008       
    Sunday, May 25, 2008         
    Saturday, May 31, 2008       
    Sunday, June 01, 2008

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    une méthode plus simple sera d'avoir une table comptenant toutes les dates, ou éventuellement une fonction qui retourne une collection...

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    encore une méchante requête sortie de derrière les fagots que voila

    Par contre, je veux bien une explication de texte moi... parce que dimension, measures, etc... ça ne me dit pas grand chose

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ouaip moi non plus ça ne me dit pas grand chose et ça ne marche pas.
    En fait j'utilise ClearQuest (IBM) et je suis limité avec le SQL, je ne peux faire que du SELECT

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bah t'aurais donné la version d'Oracle ce serait pas mal déjà

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pardon c'est la version 9.2.0.6.0

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    et créé une table avec tous les jours de l'année c'est pas possible?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table t(d date);
    exec for i in 0..365 loop insert into t values (date '2008-01-01'+i); end loop
    commit;
    select * from t where d between date '2008-01-01' 
      and sysdate and to_char(d,'DY') like 'S%';

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par orafrance Voir le message
    encore une méchante requête sortie de derrière les fagots que voila

    Par contre, je veux bien une explication de texte moi... parce que dimension, measures, etc... ça ne me dit pas grand chose
    dimension je prends x, c'est un peu l'indice de mon tableau. avec x entre 0 et 44. Je boucle (iterate) jusqu'à une certaine valeur (sysdate).

    ensuite pour chaque d[x] je calcule le prochain samedi et le prochain dimanche...

    il y a sûrement quelques bugs à corriger

  10. #10
    Invité
    Invité(e)
    Par défaut
    Non je ne peux pas créer de tables, ni les modifier, tout ce que je peux faire c'est du SELECT

  11. #11
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu peux toujours demander les droits pour créer la table non?

    une solution assez moche serait d'employer une table ou vue existante + rownum, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select date '2008-01-05'+mod(rownum+1,2)+7*trunc((rownum-1)/2) d 
    from all_objects where rownum<45;

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ok merci encore.
    Par contre on est obligé de choisir la date de départ coincidant à un samedi donc pas trop pratique

    J'ai trouvé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select to_char(to_date('2008-jan-01', 'RRRR/MM/DD') + rnum - 1, 'yyyy-MM-DD') 
    from (select rownum rnum 
            from all_objects 
            where rownum <= current_date - to_date('2008-jan-01', 'RRRR/MM/DD') + 1) 
    where to_char(to_date('2008-jan-01', 'RRRR/MM/DD') + rnum - 1, 'DY') in ('SAT', 'SUN'))
    Sinon, non je ne peux pas demander les droits car ClearQuest ne permet seulement que d'utiliser SELECT ... Je sais c'est NUL !

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2010, 20h57
  2. Réponses: 7
    Dernier message: 26/05/2007, 12h43
  3. récupérer les noms des champs d'une table access
    Par fabrice33 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/04/2007, 19h38
  4. Réponses: 14
    Dernier message: 24/10/2006, 06h51

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