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

Oracle Discussion :

Rechercher liste de mois compris entre 2 dates


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 61
    Points
    61
    Par défaut Rechercher liste de mois compris entre 2 dates
    Bonjour,

    je suhaiterais trouver le moyen de lister tous les mois
    compris entre 2 dates.

    Exemple : tous les mois de mai compris entre le 01/01/2004 et 31/05/2005
    ==> mai 2004 et mai 2005 (ou 01/01/2004 et 01/01/2005)

    Comment puis-je procéder
    merci d'avance pour votre aide

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DECLARE
    	v_date1 DATE := TO_DATE('01/01/2004', 'DD/MM/YYYY');
    	v_date2 DATE := TO_DATE('31/05/2005', 'DD/MM/YYYY');
    BEGIN
    	FOR i IN 0.. MONTHS_BETWEEN(v_date2, v_date1) - 1
    	LOOP
    		DBMS_OUTPUT.PUT_LINE(i ||CHR(9)||TO_CHAR(ADD_MONTHS(v_date1, i), 'MON'));
    	END LOOP;
    END;

  3. #3
    Membre du Club
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse.

    N'y a t'il aucun moyen de faire çà en requête sql select (sans passer une procédure stockée, ou une fonction) ?

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Tu peux utiliser le group by cube( il faut avoir la version 9i et plus).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT TO_CHAR (ADD_MONTHS (TO_DATE (:date1, 'DD/MM/YYYY'), 
    ROWNUM - 1),'MON') MOIS
      FROM (SELECT   1
                FROM DUAL
            GROUP BY CUBE (1, 1, 1, 1, 1))
     WHERE ROWNUM <= TRUNC (MONTHS_BETWEEN (TO_DATE (:date2, 'DD/MM/YYYY'),
                                            TO_DATE (:date1, 'DD/MM/YYYY')))+1

  5. #5
    Membre du Club
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Merci beaucoup,

    je ne connaissais pas du tout çà mais c'est génial
    çà risque de me servir beaucoup

    MERCI

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Une autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TO_CHAR (ADD_MONTHS (TO_DATE (:date1, 'DD/MM/YYYY'), num - 1),'MON') mois
      FROM (SELECT     LEVEL num
                  FROM (SELECT 1
                          FROM DUAL)
            CONNECT BY LEVEL <= TRUNC (MONTHS_BETWEEN (TO_DATE (:date2, 'DD/MM/YYYY'),
                                                       TO_DATE (:date1, 'DD/MM/YYYY')))+ 1)
    Attention, Il y a une petite mise en garde selon la version utilisée
    http://www.developpez.net/forums/sho...5&postcount=16

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 16/05/2008, 17h39
  2. Réponses: 2
    Dernier message: 02/07/2007, 16h52
  3. Réponses: 7
    Dernier message: 22/06/2007, 14h38
  4. Réponses: 5
    Dernier message: 02/09/2006, 00h23
  5. Obtenir des enregistrements compris entre 2 dates
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 29/09/2005, 13h56

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