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 :

Date restituée en anglais


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut Date restituée en anglais
    Bonjour,

    J'ai la vue suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create or replace view VRESTAURATION01 as
    select IDRESTAURATION ID, to_char(daterestauration, 'Day dd Month YYYY') || '  ' ||typerepas as libelle
    from RESTAURATION;
    Je la teste sur sqldeveloper, ça marche nickel, le mois et le jour sont en français.

    j'appelle la même requête depuis un programme c#, en récupérant le résultat dans un objer DataTable, ça marche encore nickel, ... à une détail près : la date et le jour sont en anglais.
    Que faut-il faire pour que tout parte d'Oracle en français ?
    Merci pour vos lumières

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    La différence provient d'un paramètre de la session de connexion. La valeur par défaut peut être définie suivant le client utilisé pour la connexion.

    2 solutions possibles :
    - paramétrer correctement le client utilisé (par exemple en base de registre)
    - ou lancer la commande suivante à chaque connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER SESSION 
       SET NLS_DATE_LANGUAGE = french;
    Exemple :

    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
     
    SQL> ALTER SESSION SET NLS_DATE_LANGUAGE = English;
     
    Session altered
     
    SQL> SELECT TO_CHAR(SYSDATE, 'Day DD Month YYYY') Today FROM DUAL;
     
    TODAY
    ---------------------------
    Thursday  31 January   2013
     
    SQL> ALTER SESSION SET NLS_DATE_LANGUAGE = French;
     
    Session altered
     
    SQL> SELECT TO_CHAR(SYSDATE, 'Day DD Month YYYY') Today FROM DUAL;
     
    TODAY
    --------------------------
    Jeudi    31 Janvier   2013

  3. #3
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par r83 Voir le message
    Bonjour,

    J'ai la vue suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create or replace view VRESTAURATION01 as
    select IDRESTAURATION ID, to_char(daterestauration, 'Day dd Month YYYY') || '  ' ||typerepas as libelle
    from RESTAURATION;
    Si vous n'avez qu'un nombre limité de vues à impacter (ce qui fait que en dehors de ces vues, la langue sera bien l'anglais), vous pouvez spécifier la langue dans To_Char :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select IDRESTAURATION ID, to_char(daterestauration, 'Day dd Month YYYY','NLS_DATE_LANGUAGE = FRENCH') || '  ' ||typerepas as libelle
    from RESTAURATION;

  4. #4
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut
    Bonsoir,

    Merci pour les réponses.
    J'ai effectivement modifié le code dans la vue et ça marche.
    Sous sqldeveloper et sqlplus, les résultats sont en français ce qui montre, ce qui montre bien que je suis en NLS_DATE_LANGUAGE = French;
    Il faudrait effectivement voir les format de date dans les objets Oracle fournis par Oracle pour accéder depuis C# à une bd Oracle.

    Bonne soirée.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Bonsoir,

    Attention aux expressions.
    "Je suis en NLS_DATE_LANGAGE = french"
    Cette façon de s'exprimer me semble trompeuse.
    Vous avez spécifié la langue dans laquelle la fonction to_char doit restituer la date.
    Vous vous êtes affranchi l'environnement.

    ...les format de date dans les objets Oracle fournis par Oracle...
    Je ne sais pas exactement à quels objets vous faites référence mais vraisemblablement une requête ou un programme plsql va restituer une date que vous pourrez transformer pour affichage soit en utilisant to_char comme vous l'avez fait, soit en fixant la valeur de NLS_DATE_LANGAGE dans l'environnement, par exemple en procédant comme le suggère spdev666

    Pozzo

  6. #6
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut
    Bonsoir,

    Je parle des pilotes Oracle pour .net de microsoft : les classe OracleConnexion, OracleCommand et DataTable (classe Microsoft).
    Merci

  7. #7
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par r83 Voir le message
    Sous sqldeveloper et sqlplus, les résultats sont en français ce qui montre, ce qui montre bien que je suis en NLS_DATE_LANGUAGE = French;
    sqldeveloper est en jdbc les paramètres NLS sont définis par l'environnement java.
    sqlplus, lui, va utiliser l'environnement OS (variables d'environnement, registry,...)

    Cordialement,
    Franck.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    En conclusion les objets et classes n'imposent pas une langue particulière.
    Soit vous la positionnez via l'environnement, soit vous la forcez dans vos programmes.

    Pozzo

Discussions similaires

  1. [CR XI] Mettre un date au format anglais
    Par klaver EDI dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 19/02/2012, 19h44
  2. format date et heure (anglais / français)
    Par delavega dans le forum Access
    Réponses: 3
    Dernier message: 23/12/2011, 20h52
  3. Convertir date française en anglais
    Par flippaeti dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2009, 13h47
  4. [MySQL] Affichage date au format anglais
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/12/2008, 16h14
  5. Réponses: 2
    Dernier message: 08/02/2008, 20h53

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