Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 03/10/2011, 17h48   #1
Membre à l'essai
 
Inscription : septembre 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 75
Points : 22
Points : 22
Par défaut Numéro du jour de la semaine

Bonjour,


je suis confronté au problème suivant :

lorsque j'effectue la requête suivante
Code :
1
2
 
SELECT TO_CHAR(TO_DATE('01/09/2011','DD/MM/YYYY'),'D') FROM dual;
sur mon poste de travail j'obtiens :
4 => 01/09/2011 étant un jeudi.

si je fais la même chose le serveur j'obtiens
5

Super !

Quelqu'un a une idée ?

Merci
sfoggy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 17h54   #2
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,


Quel est ton but ?

Extraire le jour de la date ?
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 18h06   #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
En Europe le premier jour de la semaine est un lundi, en Amérique du nord c'est le dimanche.

Malheureusement le format "D" ne prend pas en compte le nls_date_language.
Il faut jouer avec d'autres paramètres comme nls_territory :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT to_char(sysdate, 'FMDay D') AS jour_semaine FROM dual;
 
JOUR_SEMAINE                      
----------------------------------
Lundi 1                           
 
ALTER session SET nls_territory = america;
-- Session altered.
 
SELECT to_char(sysdate, 'FMDay D') AS jour_semaine FROM dual;
 
JOUR_SEMAINE                      
----------------------------------
Lundi 2
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 18h23   #4
Membre à l'essai
 
Inscription : septembre 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 75
Points : 22
Points : 22
Merci de votre attention.

Pour ORA-OO7 :
Mon but est de trouver le jour de la semaine. Car à un jour donné correspond des horaires de travail spécifiques.


Pour Waldar :
Je me connecte avec SQLPlus à partir de mon poste et du serveur avec le même compte utilisateur. Comment se fait t-il que je n'obtienne pas la même valeur ?
sfoggy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 19h33   #5
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 pouvez lancer cette requête avec les deux connexions :
Code :
SELECT * FROM sys.nls_session_parameters;
Sinon pour votre problème, vous pouvez travailler avec le nom des jours qui lui est fixe si vous précisez le langage dans la fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT to_char(sysdate, 'FMDay', 'NLS_DATE_LANGUAGE=french') AS jour FROM dual;
 
JOUR                            
--------------------------------
Lundi                           
 
 
ALTER session SET nls_territory = america;
-- Session altered.
 
SELECT to_char(sysdate, 'FMDay', 'NLS_DATE_LANGUAGE=french') AS jour FROM dual;
 
JOUR                            
--------------------------------
Lundi
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 07h53   #6
Membre à l'essai
 
Inscription : septembre 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 75
Points : 22
Points : 22
En effet, j'ai bien america d'un côté et FRANCE de l'autre.


Quel est l'impact si avant de faire un traitement je fais un alter session ?
sfoggy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 20h05   #7
Membre actif
 
Inscription : février 2007
Messages : 167
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 167
Points : 161
Points : 161
Par défaut Détecter et gérer le décalage

Salut,

Une autre solution est de détecter et gérer le décalage du numéro de jour.

Ex : Je sais que le 03/10/2011 est un lundi.
J'interroge la base avec le format D et si c'est 2 j'ai un décalage de 1 à gérer (en faisant attention au jour n°1 qu'il faut interpréter en 7 et pas en 0)

En encapsulant ça dans une fonction c'est jouable et ça permet d'éviter de jouer sur la session.

Pozzo.Violent
Pozzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 11h27   #8
Membre à l'essai
 
Inscription : septembre 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 75
Points : 22
Points : 22
Merci, pour votre aide.
sfoggy 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 19h24.


 
 
 
 
Partenaires

Hébergement Web