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 :

Sortir la liste de tous les jours inclus entre deux dates


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut Sortir la liste de tous les jours inclus entre deux dates
    Bonjour.

    J'aimerais sortir la liste de tous les jours inclus entre deux dates.
    J'ai trouvé le forum suivant qui est un peu similaire : obtenir les 28 derniers jours du mois à partir de la date actuelle mais je n'arrive pas à adapter la requête à ma situation.

    J'ai une table contenant des colonnes dates dont le contenu est par exemple :
    01/01/2009
    02/01/2009
    05/01/2009
    et j'aimerais donc afficher comme résultat :
    01/01/2009
    02/01/2009
    03/01/2009
    04/01/2009
    05/01/2009

    Est-ce que quelqu'un peut m'aider?

    Merci.

  2. #2
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Problème classique (axe de dimension Temps dans un cube) très compliqué à résoudre car tu veux créer des lignes supplémentaires.

    Il y a plusieurs solutions qui dépendent du contexte d'utilisation : tu fais une requête en script ? Avec un requêteur (BO, Cognos, Qlikview), un Cube (Essbase, Cognos) ? Avec un ETL (ODI/sunopsis, Genio, SSIS, Talend) ?

    Parmi les solutions:
    - utiliser une table très peuplée (comme ALL_OBJECTS) pour générer une liste de lignes
    - utiliser une requête récursive sur DUAL
    - PL/SQL
    - Créer une table CALENDRIER avec 1 ligne par jour (attention il faudra la maintenir).

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par nuke_y Voir le message
    - Créer une table CALENDRIER avec 1 ligne par jour (attention il faudra la maintenir).
    Qu'entendez-vous par la maintenir ?

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Une requête SQL ne suffit-elle pas à résoudre son problème?

  5. #5
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Pour ajouter a tout ce qui a été ecris, quelle version Oracle tu as ???

    La reponse a ta question est complètement dépendante de la version Oracle ....

  6. #6
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut
    Citation Envoyé par fatsora Voir le message
    La reponse a ta question est complètement dépendante de la version Oracle ....
    J'utilise Oracle 9i.

    J'arrive à le faire simple avec pl/sql :
    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
    -- Created on 09/10/2009 by ILALAINA 
    DECLARE
      TYPE t_dates IS TABLE OF DATE;
      v_dates     t_dates;
      v_date_min  DATE;
      v_date_max  DATE;
      v_date_temp DATE;
      i           PLS_INTEGER := 1;
    BEGIN
      v_dates := t_dates();
      SELECT MIN(oper_date), MAX(oper_date)
        INTO v_date_min, v_date_max
        FROM operations;
      v_date_temp := v_date_min;
      WHILE (v_date_temp <= v_date_max) LOOP
        v_dates.EXTEND;
        v_dates(i) := v_date_temp;
        v_date_temp := v_date_temp + 1;
        i := i + 1;
      END LOOP;
      -- Et la collection v_dates sera la valeur de retour de la procédure.
      /*  for j in 1 .. v_dates.count loop
      dbms_output.put_line(v_dates(j));
      end loop;*/
    END;
    Mais je voudrais le faire avec une requête SQL, peut-être avec des requêtes hiérarchiques ...

  7. #7
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT
    TO_DATE('01/01/2009', 'DD/MM/YYYY') + level - 1
    FROM dual
    connect BY level <= 1 + (TO_DATE('08/01/2009', 'DD/MM/YYYY') - TO_DATE('01/01/2009', 'DD/MM/YYYY'))

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/11/2014, 16h36
  2. Exclure tous les champs semblables entre deux tables
    Par Vink80 dans le forum Développement
    Réponses: 3
    Dernier message: 27/07/2012, 20h14
  3. Compter le nombre de jours écoulés entre deux dates
    Par koKoTis dans le forum VBScript
    Réponses: 8
    Dernier message: 07/08/2006, 19h44
  4. [Dates] Nombre jours ouvrés entre deux dates
    Par Yali dans le forum Langage
    Réponses: 4
    Dernier message: 28/12/2005, 12h05
  5. Nbre de jours ouvrés entre deux date
    Par lito74 dans le forum Access
    Réponses: 3
    Dernier message: 08/12/2005, 09h16

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