Bonjour à tous,

J'ai un problème au niveau du premier Jour de la semaine quand je suis sur une base (ORACLE DATABASE 10G) avec un nls_lang AR8MSWIN1256.

Au fait, je veux que le premier jour de la semaine soit LUNDI et ce, de façon fixe dans la base de données ORACLE.
Hors, oracle considère par exemple qu'aujourd'hui, mercredi, c'est le 5ème jour de la semaine et non le 3ème.

Je sais que vu que j'utilise le nls lang ARABE_TUNISIA.AR8MSWIN1256 que pour Oracle, tous les pays arabes, par défaut le premier jour de la semaine c'est samedi et non lundi. Seulement, en Tunisie, le premier jour de la semaine c'est lundi.

J'ai pensé qu'en modifiant le NLS_TERRITORY dans la table PROPS$ en mettant FRANCE comme valeur sous oracle, le problème serait résolu.

Voilà ce que j'ai dans PROP$ (si vous pensez comme moi qu'en modifiant ici un paramètre cela réglerait tout) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SQL> select * from PROPS$;
 
NAME                           VALUE$                                                                   
------------------------------ ---------------------------------------------------------------------
DICT.BASE                      2                                                                        
DEFAULT_TEMP_TABLESPACE        TEMP                                                                     
DEFAULT_PERMANENT_TABLESPACE   USERS                                                                    
DEFAULT_TBS_TYPE               SMALLFILE                                                                
NLS_LANGUAGE                   AMERICAN                                                                 
NLS_TERRITORY                  FRANCE                                                                   
NLS_CURRENCY                   $                                                                        
NLS_ISO_CURRENCY               AMERICA                                                                  
NLS_NUMERIC_CHARACTERS         .,                                                                       
NLS_CHARACTERSET               AR8MSWIN1256                                                             
NLS_CALENDAR                   GREGORIAN                                                                
 
NAME                           VALUE$                                                                   
------------------------------ ---------------------------------------------------------------------
NLS_DATE_FORMAT                DD/MM/RRRR                                                               
NLS_DATE_LANGUAGE              AMERICAN                                                                 
NLS_SORT                       BINARY                                                                   
NLS_TIME_FORMAT                HH.MI.SSXFF AM                                                           
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM                                                 
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR                                                       
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR                                             
NLS_DUAL_CURRENCY              $                                                                        
NLS_COMP                       BINARY                                                                   
NLS_LENGTH_SEMANTICS           BYTE                                                                     
NLS_NCHAR_CONV_EXCP            FALSE                                                                    
 
NAME                           VALUE$                                                                   
------------------------------ ---------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET         AL16UTF16                                                                
NLS_RDBMS_VERSION              10.2.0.1.0                                                               
GLOBAL_DB_NAME                 SISRT.REGRESS.RDBMS.DEV.US.ORACLE.COM                                    
EXPORT_VIEWS_VERSION           8                                                                        
DBTIMEZONE                     00:00                                                                    
 
27 rows selected.
Voici le résultat que j'obtiens en voulant voir le jour de la semaine d'aujourd'hui (mercredi 16 septebre 2009) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SQL> select to_number (to_char(sysdate,'D')) from dual;
 
TO_NUMBER(TO_CHAR(SYSDATE,'D'))
-------------------------------
                              5
Hors que si je faisais un simple alter session :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SQL> alter session set NLS_TERRITORY=FRANCE;
 
Session altered.
j'obtiens bien 3 et non 5 (pour dire que mercredi est le 3ème jour de la semaine :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SQL> select to_number (to_char(sysdate,'D')) from dual;
 
TO_NUMBER(TO_CHAR(SYSDATE,'D'))
-------------------------------
                              3
Merci si vous pouvez m'aider à trouver une solution simple sachant qu'on a développé pas mal de programmes qui utilisent les jours calendaires ... (au niveau de la GRH, le calcul des congés, ...).



Merci