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 :

[SQL] Retourner le nombre de week-end entre deux dates


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Par défaut [SQL] Retourner le nombre de week-end entre deux dates
    Bonjour tout le monde,

    Est-il possible de compter le nombre de week-end entre deux dates ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select retourne_le_nombre_de_weekend from ma_table where ma_table.ma_date between   to_date('02/01/2012','DD/MM/YYYY') and to_date('20/05/2012','DD/MM/YYYY')
    Dans mon exemple ci-dessus retourne_le_nombre_de_weekend devrait retourner le chiffre 20.

    Merci d'avance,

    Yves

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Le mieux c'est d'avoir une table calendrier :
    Calendrier avec jours fériés
    Sinon comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(case when to_char(to_date('01/01/2000','dd/mm/yyyy') + rownum, 'fmDAY', 'NLS_DATE_LANGUAGE=FRENCH') IN ('SAMEDI','DIMANCHE') 
                      then 'WE' 
                  end) as nb_WE
      FROM dual
    connect BY level <= (to_date('20/05/2012','DD/MM/YYYY') - to_date('02/01/2012','DD/MM/YYYY')) -1

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 56
    Par défaut Nombre de Dimanche entre 2 dates
    L'idée est de calculer le nombre de dimanche.

    Il suffit alors de calculer le nombre de jours entre les 2 dates puis de divisé par 7. La partie entière donne le nombre de dimanche... à plus ou un près !

    Pour affiner le résultat, il est important le prendre en compte le jour de la date de début. En effet, 3 jours entre lundi et mercredi = 0 dimanche, alors que 3 jours entre samedi et lundi = 1 dimanche !

    Pour cela, il suffit de rajouter le numéro de jours de la semaine au nombre de jour entre les deux dates.

    Soit : Ind_jour_debut = JOUR( Date_deb ) // doit retourné 1 pour Lundi et 7 Dimanche
    Nb jour = (Date_fin - Date_Debut) + 1
    Nb Dimanche = Partie_Entière( (( Nb_Jour + ( Ind_jour_debut - 1 )) / 7)

    Le problème résiduel reste de calculer le numéro de jour de la semaine... quelque soit le NLS_LANGUAGE utilisé ! D’où ma super formule basé sur le format IW d'oracle permettant d'avoir la date du LUNDI de la semaine courante, quelque soit le paramétrage du poste exécutant le code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE FUNCTION NB_DIMANCHE(DATE_DEB IN DATE, DATE_FIN IN DATE) RETURN NUMBER IS
      wk_Indice   NUMBER;
    BEGIN
        wk_Indice := Trunc(DATE_DEB) - Trunc(DATE_DEB,'IW') + 1; -- 1=Lundi...7=dimanche 
        RETURN trunc(((Trunc(DATE_FIN) - Trunc(DATE_DEB)) + wk_Indice) / 7);
    END;
    /
    PS : pour calculer le nombre de Samedi, il suffit de s'arranger pour wk_indice donne 1 le dimanche et 7 le samedi !

Discussions similaires

  1. Enlever les week-ends entre deux dates
    Par alitazichibi dans le forum Requêtes
    Réponses: 8
    Dernier message: 13/11/2012, 07h48
  2. nombre de week end entre 2 dates
    Par elratus dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/04/2012, 07h10
  3. [PHP 5.2] Fonction qui retourne le nombre de jours compris entre deux dates
    Par zemzoum89 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2010, 20h27
  4. Réponses: 1
    Dernier message: 10/08/2006, 14h43
  5. 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

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