Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/11/2007, 14h18   #1
Membre à l'essai
 
Administrateur de base de données
Inscription : mai 2003
Messages : 93
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

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

Informations forums :
Inscription : mai 2003
Messages : 93
Points : 24
Points : 24
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
milka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h05   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Code :
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;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 15h17   #3
Membre à l'essai
 
Administrateur de base de données
Inscription : mai 2003
Messages : 93
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

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

Informations forums :
Inscription : mai 2003
Messages : 93
Points : 24
Points : 24
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) ?
milka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 16h07   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Tu peux utiliser le group by cube( il faut avoir la version 9i et plus).
Code :
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
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 17h32   #5
Membre à l'essai
 
Administrateur de base de données
Inscription : mai 2003
Messages : 93
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

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

Informations forums :
Inscription : mai 2003
Messages : 93
Points : 24
Points : 24
Merci beaucoup,

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

MERCI
milka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 17h36   #6
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Une autre solution
Code :
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
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h16.


 
 
 
 
Partenaires

Hébergement Web