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/03/2007, 14h21   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 35
Localisation : Maroc

Informations forums :
Inscription : octobre 2005
Messages : 179
Points : 123
Points : 123
Envoyer un message via Skype™ à azziz2005
Par défaut Requete sans compte les weekend

salut tout le monde,
j'ai besoin d'une requete SQL qui me sorte la date cible a partir d'une date debut + un nombre de jours sans compter les samdedis et dimanches
exemple

date_cible=date_deb+10;
si date_cible=le vendredi 09/03/07 alors
date_cible=23/03/07

merci
azziz2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 14h25   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,

Sachant qu'une semaine fait 7 jours, et qu'il n'y a que 5 jours qui t'interesse, en faisant :

date_cible=date_deb+10+(10/5)*2;

Normalement ça doit passer.

[edit] sauf que cela dépend du jour sur lequel tu es.
A mon avis il faut partir sur un test du jour de depart en utilisant sysdate.
C'est peux être une piste...
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 14h36   #3
Membre habitué
 
Inscription : octobre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 35
Localisation : Maroc

Informations forums :
Inscription : octobre 2005
Messages : 179
Points : 123
Points : 123
Envoyer un message via Skype™ à azziz2005
si on la date_deb est egale a un vendredi et au lieu de 10 on 3
cette formule ne marche plus
azziz2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 15h03   #4
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Ici tu devrais trouver ton bonheur

http://www.developpez.net/forums/sho...=ajouter+jours
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 16h00   #5
Membre habitué
 
Inscription : octobre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 35
Localisation : Maroc

Informations forums :
Inscription : octobre 2005
Messages : 179
Points : 123
Points : 123
Envoyer un message via Skype™ à azziz2005
ca marche n'ont plus
mon besoin c'est d'avoir la date cible. et non le nb de jours ouvrable
azziz2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 20h16   #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
Bonjour,

Le code ci-dessous répond à ta question il me donne les date du 2007-03-09 au 2007-03-22 sans les samedis et dimanches , mais il faut seulement vérifier TO_CHAR (daily_date, 'DY') si te donne 'SAM.' ,'DIM.' sinon tu le changes dans la requette

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SELECT   daily_date 
    FROM
    (SELECT l, daily_date, x, y
            FROM (SELECT rn l, daily_date, TRUNC ((rn - 1) / 5) x,
                         MOD (rn - 1, 5) + 1 y
                    FROM (SELECT   TRUNC (TO_DATE (:p_date_debut),
                                          'DD'
                                         )
                                 + x daily_date,
                                 ROWNUM rn
                            FROM (SELECT ROWNUM - 1 x
                                    FROM (SELECT   1
                                              FROM DUAL
                                          GROUP BY CUBE (1, 1, 1, 1))
                                   WHERE ROWNUM <= 14)))
   WHERE TO_CHAR (daily_date, 'DY') NOT IN ('SAM.', 'DIM.'))
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 20h37   #7
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
Bonjour,

Dèsolè mon dernier message affiche les dates à partir de la date début jusqu'à la fin , mais le code suivant te donne uniquement la date cible sans compter les samedis et les dimanches

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT  max(daily_date)
                    FROM (SELECT   TRUNC (TO_DATE (:p_date_debut),
                                          'DD'
                                         )
                                 + x daily_date,
                                 ROWNUM rn
                            FROM (SELECT ROWNUM - 1 x
                                    FROM (SELECT   1
                                              FROM DUAL
                                          GROUP BY CUBE (1, 1, 1, 1,1,1,1,1,1,1))
                                   WHERE ROWNUM <= :nb_j+(:nb_j/5)*2))
             WHERE TO_CHAR (daily_date, 'DY') NOT IN ('SAM.', 'DIM.')
Remarque : :nb_j : c'est le nombre de jours
:p_date_debut la date début.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 00h02   #8
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
Par défaut Remarque

Bonjour,


Code :
1
2
3
4
(SELECT ROWNUM - 1 x
                                    FROM (SELECT   1
                                              FROM DUAL
                                          GROUP BY CUBE (1, 1, 1, 1,1,1,1,1,1,1)))
ce code me permet de générer des chiffre de 0 à 1024 mais si tu as besoin seulement 0 à 15 il faut mettre GROUP BY CUBE (1, 1, 1, 1)
Code :
1
2
3
4
(SELECT ROWNUM - 1 x
                                    FROM (SELECT   1
                                              FROM DUAL
                                          GROUP BY CUBE (1, 1, 1, 1)))
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 09h27.


 
 
 
 
Partenaires

Hébergement Web