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 :

Retrouver le mois d'une semaine


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut Retrouver le mois d'une semaine
    Bonjour tout le monde,

    voilà, j'ai besoin de faire un truc tout bête mais sur lequel je bute depuis un petit moment.

    J'ai un champ id_semaine dans lequel j'ai le numéro de semaine iso au format yyyyiw (ex : 201139 = Semaine du 26 Septembre au 02 Octobre). Ce qu'il faudrait c'est à partir de cette valeur, retrouver le mois auquel la semaine appartient. Dans ce cas précis : Septembre (au format 201109 si possible).

    Après avoir naïvement essayé un "select to_char(to_date('201139','yyyyiw'),'yyyymm') from dual", j'ai cherché sur le net mais sans succès. Peut-être a cause d'une mauvaise formulation, j'avoue ne pas savoir trop comment le synthétiser.

    Bref, si l'un de vous avait une idée permettant de me dépatouiller, ça serait génial.

    Merci !

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Dans le cas d'une semaine à cheval sur 2 mois, on prend le 1er ?

  3. #3
    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
    Vous commettez une énorme erreur en mélangeant les formats YYYY et IW.
    Si vous voulez suivre le format ISO, il faut utiliser IYYY pour les années.

    Prenons le cas du 1er janvier 2011 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select to_char(date '2011-01-01', 'yyyyiw') sm1
         , to_char(date '2011-01-01', 'iyyyiw') sm2
      from dual;
     
    SEM1   SEM2  
    ------ ------
    201152 201052

  4. #4
    Membre averti
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut
    Edit : @Rei
    Pas forcément, on prend le mois qui contient le Jeudi (4 jours / 7 quoi, je sais pas si c'est clair?)

    Donc dans le cas de la semaine du 26 Sept. au 02 Oct. ca serait Septembre.
    Mais pour la semaine du 31 Oct. au 06 Nov. ca serait Novembre.

  5. #5
    Membre averti
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut
    Merci pour la précision Waldar. C'est effectivement iyyyiw qui est stocké dans la table.

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    À part faire une fonction PL, j'ai trouvé un lien sur le forum qui donne une approche.

  7. #7
    Membre averti
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut
    Merci pour ton lien Rei. Entre temps j'ai pensé à une solution assez simple trouver l'info depuis le référentiel temps de la base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select mois_id from z_temps_fr t where SEMAINE_ID=201139
    group by mois_id
    having count(mois_id) >= 4
     
    Résultat : 201109
    Du coup je me servir de ca pour mettre à jour l'alimentation de la table temps et avoir cette info stockée pour m'en reservir ailleurs.

    Merci pour votre aide.

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

Discussions similaires

  1. retrouver le jour de la semaine d'une date !
    Par masterix59 dans le forum C
    Réponses: 3
    Dernier message: 22/11/2007, 16h31
  2. [Dates] retrouver le vendredi d'une semaine donné en php
    Par amel95140 dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2007, 17h44
  3. Réponses: 6
    Dernier message: 01/03/2007, 13h57
  4. [Date] Retrouver le mois avec le num de la semaine
    Par romano dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 08/02/2006, 20h31
  5. Réponses: 14
    Dernier message: 30/12/2005, 19h31

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