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) :
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
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.
Hors que si je faisais un simple alter session :
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
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 SQL> alter session set NLS_TERRITORY=FRANCE; Session altered.
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, ...).
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![]()
Partager