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 :

Récupérer le dernier jour du mois


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut Récupérer le dernier jour du mois
    Bonjour à tous,

    j'ai besoin de récupérer la date du dernier jour du mois de toute l'année en éliminant les week-ends

    merci par avance

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

    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
    Billets dans le blog
    4
    Par défaut
    Avec TO_CHAR(date, 'D') tu as le jour 1=Dimanche, 2:Lundi, ... 7=Samedi
    Il suffit que tu testes si le dernier jour du mois est un dimanche tu enlèves 2 jours, si c'est un samedi tu enlèves 1 jour.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    Citation Envoyé par McM Voir le message
    Avec TO_CHAR(date, 'D') tu as le jour 1=Dimanche, 2:Lundi, ... 7=Samedi
    .
    merci MCM tu es toujours à la hauteur.

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Sinon, petit amusement pour avoir tous les derniers jours ouvrés des mois de l'année 2019
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT MAX(d), TO_CHAR(MAX(d), 'FMDAY', 'NLS_DATE_LANGUAGE=french') jour
    FROM (SELECT TRUNC(SYSDATE, 'RRRR') - 1 + LEVEL d FROM dual connect BY LEVEL < 367)
    WHERE EXTRACT(YEAR FROM d) = 2019
    AND TO_CHAR(d, 'D') NOT IN (1,7)
    GROUP BY TRUNC(d, 'MM')
    ORDER BY 1

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Dommage de faire un "connect by" sur 366 valeurs pour en retourner 12...

    Autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with dates as (
        select add_months(trunc(to_date('2019','YYYY'),'YYYY'),level) - 1 as d
        from dual
        connect by level < 13
    )
    select d as "date", TO_CHAR(d, 'FMDAY', 'NLS_DATE_LANGUAGE=french') as "jour" from 
    (
        select d + least(0, 5 - (1 + TRUNC (d) - TRUNC (d, 'IW')) ) as d from dates 
    )
    ;

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    Hélas, les deux requêtes de JeitEmgie et McM ne retournent pas les même valeurs !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ___MAX(D)______JOUR___ __ ____date_____________jour
    31/01/2019____JEUDI____________31/01/2019____JEUDI
    28/02/2019____JEUDI____________28/02/2019____JEUDI
    30/03/2019____SAMEDI___________29/03/2019____VENDREDI
    30/04/2019____MARDI____________30/04/2019____MARDI
    31/05/2019____VENDREDI_________31/05/2019____VENDREDI
    29/06/2019____SAMEDI___________28/06/2019____VENDREDI
    31/07/2019____MERCREDI_________31/07/2019____MERCREDI
    31/08/2019____SAMEDI___________30/08/2019____VENDREDI
    28/09/2019____SAMEDI___________30/09/2019____LUNDI
    31/10/2019____JEUDI____________31/10/2019____JEUDI
    30/11/2019____SAMEDI___________29/11/2019____VENDREDI
    31/12/2019____MARDI____________31/12/2019____MARDI

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    merci JeitEmgie c'était une erreur de ma part désolé

    Citation Envoyé par JeitEmgie Voir le message
    Dommage de faire un "connect by" sur 366 valeurs pour en retourner 12...

    Autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with dates as (
        select add_months(trunc(to_date('2019','YYYY'),'YYYY'),level) - 1 as d
        from dual
        connect by level < 13
    )
    select d as "date", TO_CHAR(d, 'FMDAY', 'NLS_DATE_LANGUAGE=french') as "jour" from 
    (
        select d + least(0, 5 - (1 + TRUNC (d) - TRUNC (d, 'IW')) ) as d from dates 
    )
    ;

    mais ici comment on élimine seulement le DIMANCHE et pas le lundi, dans la solution de McM on peut manipuler ici >>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND TO_CHAR(d, 'D') NOT IN (1,7)
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    --  LUNDI    1 .
    --  MARDI    2 .
    --  MERCREDI 3 .
    --  JEUDI    4 . 
    --  VENDREDI 5 . 
    --  SAMEDI   6 . 
    --  DIMANCHE 7 .

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

Discussions similaires

  1. récupérer les derniers jours d'un mois
    Par fredonouille dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 14/05/2008, 20h45
  2. [Dates] Premier et dernier jour du mois
    Par Jarodd dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2006, 10h52
  3. Dernier jour du mois
    Par jane_ng dans le forum Langage
    Réponses: 13
    Dernier message: 03/08/2006, 12h43
  4. Dernier Jours du mois en cours
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/06/2006, 19h55
  5. premier et dernier jour du mois
    Par oneill701 dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/06/2006, 11h05

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