Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 13/10/2011, 14h27   #1
Invité régulier
 
Étudiant
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 5
Points : 5
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 !
Molkobain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 14h43   #2
Membre Expert
 
Inscription : août 2009
Messages : 779
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 779
Points : 1 098
Points : 1 098
Dans le cas d'une semaine à cheval sur 2 mois, on prend le 1er ?
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 14h50   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2011, 14h50   #4
Invité régulier
 
Étudiant
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 5
Points : 5
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.
Molkobain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 14h52   #5
Invité régulier
 
Étudiant
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 5
Points : 5
Merci pour la précision Waldar. C'est effectivement iyyyiw qui est stocké dans la table.
Molkobain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 15h10   #6
Membre Expert
 
Inscription : août 2009
Messages : 779
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 779
Points : 1 098
Points : 1 098
À part faire une fonction PL, j'ai trouvé un lien sur le forum qui donne une approche.
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 15h36   #7
Invité régulier
 
Étudiant
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 5
Points : 5
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 :
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.
Molkobain 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 05h03.


 
 
 
 
Partenaires

Hébergement Web