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 :

Numéro de jour de la semaine différent


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut Numéro de jour de la semaine différent
    Bonjour à tous.

    Mes deux bases sont des 10g. L'une est installée sur un serveur Windows en Francais. L'autre sur une Red Hat en Français aussi.

    A l'installation des deux bases un script renseigne une table jour qui possède la date, le numéro de la semaine, le jour de la semaine, ....

    Dans ce script, pour un dimanche, la fonction TO_CHAR(MA_DATE, 'D') retourne 7 sur la base 1 et 1 sur la base 2.

    Par contre, lorsque je me connecte avec SQL Developer sur la base 2, la même fonction me retourne 7 ....

    Voici les paramètres NLS pour chaque base :

    Base 1 :
    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
     
    PARAMETER                                                        VALUE                                                            
    ---------------------------------------------------------------- ---------------------------------------------------------------- 
    NLS_LANGUAGE                                                     FRENCH                                                           
    NLS_TERRITORY                                                    FRANCE                                                           
    NLS_CURRENCY                                                     €                                                                
    NLS_ISO_CURRENCY                                                 FRANCE                                                           
    NLS_NUMERIC_CHARACTERS                                           ,                                                                
    NLS_CALENDAR                                                     GREGORIAN                                                        
    NLS_DATE_FORMAT                                                  DD/MM/RR                                                         
    NLS_DATE_LANGUAGE                                                FRENCH                                                           
    NLS_CHARACTERSET                                                 WE8MSWIN1252                                                     
    NLS_SORT                                                         FRENCH                                                           
    NLS_TIME_FORMAT                                                  HH24:MI:SSXFF                                                    
    NLS_TIMESTAMP_FORMAT                                             DD/MM/RR HH24:MI:SSXFF                                           
    NLS_TIME_TZ_FORMAT                                               HH24:MI:SSXFF TZR                                                
    NLS_TIMESTAMP_TZ_FORMAT                                          DD/MM/RR HH24:MI:SSXFF TZR                                       
    NLS_DUAL_CURRENCY                                                €                                                                
    NLS_NCHAR_CHARACTERSET                                           AL16UTF16                                                        
    NLS_COMP                                                         BINARY                                                           
    NLS_LENGTH_SEMANTICS                                             BYTE                                                             
    NLS_NCHAR_CONV_EXCP                                              FALSE                                                            
     
    19 rows selected
    Sur la base 2 :
    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
     
    PARAMETER                                                        VALUE                                                            
    ---------------------------------------------------------------- ---------------------------------------------------------------- 
    NLS_LANGUAGE                                                     FRENCH                                                           
    NLS_TERRITORY                                                    FRANCE                                                           
    NLS_CURRENCY                                                     ¿                                                                
    NLS_ISO_CURRENCY                                                 FRANCE                                                           
    NLS_NUMERIC_CHARACTERS                                           ,                                                                
    NLS_CALENDAR                                                     GREGORIAN                                                        
    NLS_DATE_FORMAT                                                  DD/MM/RR                                                         
    NLS_DATE_LANGUAGE                                                FRENCH                                                           
    NLS_CHARACTERSET                                                 WE8ISO8859P1                                                     
    NLS_SORT                                                         FRENCH                                                           
    NLS_TIME_FORMAT                                                  HH24:MI:SSXFF                                                    
    NLS_TIMESTAMP_FORMAT                                             DD/MM/RR HH24:MI:SSXFF                                           
    NLS_TIME_TZ_FORMAT                                               HH24:MI:SSXFF TZR                                                
    NLS_TIMESTAMP_TZ_FORMAT                                          DD/MM/RR HH24:MI:SSXFF TZR                                       
    NLS_DUAL_CURRENCY                                                ¿                                                                
    NLS_NCHAR_CHARACTERSET                                           AL16UTF16                                                        
    NLS_COMP                                                         BINARY                                                           
    NLS_LENGTH_SEMANTICS                                             BYTE                                                             
    NLS_NCHAR_CONV_EXCP                                              FALSE                                                            
     
    19 rows selected
    Merci d'avance pour votre aide!

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    c'est que le NLS_TERRITORY de ta session est différent...

    Evite donc 'D' et utilise
    trunc(sysdate)-trunc(sysdate,'IW')+1 pour avoir lundi=1, mardi=2 etc...

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nls_session_parameters

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Avec la requête sur la session.

    Base 1 :
    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
     
    PARAMETER                      VALUE                                    
    ------------------------------ ---------------------------------------- 
    NLS_LANGUAGE                   FRENCH                                   
    NLS_TERRITORY                  FRANCE                                   
    NLS_CURRENCY                   €                                        
    NLS_ISO_CURRENCY               FRANCE                                   
    NLS_NUMERIC_CHARACTERS         ,                                        
    NLS_CALENDAR                   GREGORIAN                                
    NLS_DATE_FORMAT                DD/MM/RR                                 
    NLS_DATE_LANGUAGE              FRENCH                                   
    NLS_SORT                       FRENCH                                   
    NLS_TIME_FORMAT                HH24:MI:SSXFF                            
    NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF                   
    NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR                        
    NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR               
    NLS_DUAL_CURRENCY              €                                        
    NLS_COMP                       BINARY                                   
    NLS_LENGTH_SEMANTICS           BYTE                                     
    NLS_NCHAR_CONV_EXCP            FALSE                                    
     
    17 rows selected
    Sur la base 2:
    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
     
    PARAMETER                      VALUE                                    
    ------------------------------ ---------------------------------------- 
    NLS_LANGUAGE                   FRENCH                                   
    NLS_TERRITORY                  FRANCE                                   
    NLS_CURRENCY                   ¿                                        
    NLS_ISO_CURRENCY               FRANCE                                   
    NLS_NUMERIC_CHARACTERS         ,                                        
    NLS_CALENDAR                   GREGORIAN                                
    NLS_DATE_FORMAT                DD/MM/RR                                 
    NLS_DATE_LANGUAGE              FRENCH                                   
    NLS_SORT                       FRENCH                                   
    NLS_TIME_FORMAT                HH24:MI:SSXFF                            
    NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF                   
    NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR                        
    NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR               
    NLS_DUAL_CURRENCY              ¿                                        
    NLS_COMP                       BINARY                                   
    NLS_LENGTH_SEMANTICS           BYTE                                     
    NLS_NCHAR_CONV_EXCP            FALSE                                    
     
    17 rows selected
    Les deux NLS_TERRITORY sont les mêmes ...

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    étonnant,

    que te donne donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select to_char(sysdate,'DAY"="D'), value 
    from nls_session_parameters where parameter='NLS_TERRITORY';

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TO_CHAR(SYSDATE,'DAY"="D') VALUE                                    
    -------------------------- ---------------------------------------- 
    JEUDI   =4                 FRANCE                                   
     
    1 rows selected
    En passant par SQL developer que me donnait 7 alors que 1 était enregistré en base.

    Petite précision : je viens de m'apercevoir que la Red Hat est en Francais Canadien ...

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    oui, sql-developer a sûrement une option pour définir les variables NLS... mais c'est surtout un outil pour américain, la traduction française est vraiment à pleurer

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Non, en fait c'est bien en francais FR .... bizarre...
    Je vais essayer de faire ce que tu m'as dit avec sqlplus sur la base 2

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Tu avais raison. Le nls_territory est AMERICA ...

    Est-ce compliqué de le changer? Faut-il réinstaller la base complète?

    Merci

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    c'est ton paramètre de session, tu as qu'à faire NLS_TERRITORY=france avant de lancer ton programme... tu peux aussi mettre ça dans ton .profile

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    J'ai fait un alter system set NLS_TERRITORY=FRANCE scope=SPFILE.

    J'ai redémarré et c'est bon. La base est devenue francaise avec la bonne gestion des dates.

  12. #12
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Superdub Voir le message
    La base est devenue francaise...
    tu veux dire l'instance

    compare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from nls_database_parameters where parameter='NLS_TERRITORY';
    select * from nls_instance_parameters where parameter='NLS_TERRITORY';
    On ne peut pas changer la base, mais si tu changes l'instance, c'est tout bon

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Oui je me suis trompé. Merci de ton aide en tout cas !

  14. #14
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    j'avais le même souci dans du code PL/SQL chez des clients dont je n'avais aucun contrôle sur l'instance, ni même les sessions clients.... ...

    J'ai donc à l'époque du trouver une solution palliative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select mod(abs(trunc(ma_date) - to_date('01011900','DDMMYYYY')),7)+1 from dual;
    ce qui te donne 1=lundi, .... , 7 = dimanche... dans tous les cas et quelque soit la config de la session/instance...

  15. #15
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    J'ai proposé à Oracle d'ajouter un paramètre NLS_DATE_TERRITORY pour permettre une fonction du style : TO_CHAR(d,'D','NLS_DATE_TERRITORY=switzerland')

    Enhancement Request 3769415: ADD PARAMETER NLS_DATE_TERRITORY TO AFFECT 'D' FORMAT MASK

  16. #16
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    ...hum... il y a 5 ans de cela....

    Ca risque d'être encore long...

    dommage

  17. #17
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    ce qui est aussi marrant c'est la version/architecture ...

    Platform Sun Solaris SPARC (32-bit) Platform Version No Data
    Database Version 10.1

    Il n'y a jamais du 10g pour Sparc 32 bits

    Bon j'avais mis tellement de temps à convaincre Oracle de créer une Enhancement Request que je n'ai pas voulu chinoisé sur ce point de détail

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2010, 08h51
  2. Numéro de jour dans la semaine
    Par tsrsi2006 dans le forum Débuter
    Réponses: 6
    Dernier message: 13/04/2009, 14h30
  3. [Transact SQL] Numéro du jour de la semaine
    Par jowsuket dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2009, 14h58
  4. Réponses: 11
    Dernier message: 03/04/2008, 15h47
  5. Récupérer le numéro du jour dans la semaine
    Par alliance dans le forum MFC
    Réponses: 1
    Dernier message: 19/10/2007, 10h54

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