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

PL/SQL Oracle Discussion :

Date de début et fin de mois


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut Date de début et fin de mois
    Bonjour,

    J'ai un petit soucis dont je n'arrive pas à me sortir correctement. Il me faudrait la date du début et de fin de mois. Je m'explique. Prenons par exemple le mois de Mai 2010 (05/2010 dans ma fonction).
    Il faudrait que je récupère le lundi de la 1ère semaine du mois donc le 26/04/2010 et le premier lundi du mois suivant donc 07/06/2010.
    En fait je dois récupérer le début et fin de mois mais avec des semaines complètes.
    J'ai essayé de faire des choses du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                SELECT TO_CHAR (TRUNC (TO_DATE ('05/2010', 'MM/YYYY'), 'IW'))    FROM DUAL;
    et cela marche bien pour la première semaine du mois mais je n'y arrive pas pour la dernière semaine car j'obtiens la lundi 31/05/2010 or pour avoir la dernière semaine complète je devrais avoir le lundi 07/06/2010.

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Faites un trunc sur le mois, et utilisez la fonction NEXT_DAY pour avoir le lundi suivant !

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Bonsoir Thewill,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    declare 
      une_date DATE := TO_DATE('05/10', 'MM/RR');
    BEGIN
      DBMS_OUTPUT.PUT_LINE(TRUNC(une_date, 'IW'));
     
      DBMS_OUTPUT.PUT_LINE(NEXT_DAY(LAST_DAY(une_date), 'LUNDI'));
    END;
    /
    Je pense que le code est clair. Si toutefois tu as un souci avec, fais le moi savoir, je t'expliquerai alors fonction par fonction
    A+

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    avec NEXT_DAY(), il faut faire attention au paramètre NLS_DATE_LANGUAGE qui influe sur la fonction et donc être sûr de la valeur de ce paramètre ou pouvoir le modifier avec un alter session (si on a le privilège).

    En effet, j'ai un collègue qui s'est fait piégé par cette subtilité sur un serveur d'un client pour qui le paramètre était positionné sur américain alors que dans son code, il utilisait des jours en français. Et si on a pas le privilège de l'alter session ou la main mise sur l'instance, il faut recoder !

    donc, si on est pas sur de pouvoir maitriser la valeur de NLS_DATE_LANGUAGE, ca pose problème.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut
    Parfait ça marche Merci à vous

  6. #6
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut
    Bon et bien en fait me revoila avec un nouveau petit problème. La finalité de ma première question est de pouvoir faire une somme sur toutes les semaines d'un mois complet.
    j'ai donc trouvé le premier lundi et le dernier lundi du mois grâce à vous mais la en fait j'essaie de faire ma somme semaine par semaine mais j'ai un soucis.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -- trouver jour de la semaine d'une date
    SELECT TO_CHAR(TRUNC(TO_DATE(maDate,'DD/MM/YYYY'), 'WW'),'WW') FROM DUAL;
    Pour récupérer le numéro de la semaine et en gros après mon algo fait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTableau[indiceNuméroSemaine] += valeurDuJour
    Or j'ai l'impression qu'avec cette fonction mes semaines vont du vendredi au vendredi et non du lundi dimanche comme je désirerais. Y a t'il une solution à ça ?

    PS : Je vois en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM nls_database_parameters;
    que je suis en Américain or hier j'avais vérifié et il me semblait être en français. Comment puis je changer ça et est ce que mon soucis peut venir de la ?

    EDIT : Par contre en faisant cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$nls_parameters;
    je suis en Français.

    Merci

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

Discussions similaires

  1. Récupérer date de début et fin de la semaine passée.
    Par MrHighKick dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2013, 14h42
  2. [PHP 5.0] Retrouver les dates de début et fin de la semaine dernière.
    Par Kyvin dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2011, 09h29
  3. Date de début et fin de semaine
    Par PAULOM dans le forum SAS Base
    Réponses: 2
    Dernier message: 21/04/2010, 13h56
  4. [PHP 5.2] [Dates] début et fin de mois précédent
    Par kaboume dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2009, 14h09
  5. [Dates] Calculer le début et la fin du mois
    Par pas30 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2007, 15h34

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