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

Oracle Discussion :

Problème de persistance de format de date


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème de persistance de format de date
    Bonjour,

    En référence à ce sujet :
    http://www.developpez.net/forums/d11...t-date-oracle/

    Avant que je tape quoi que ce soit comme commande mon format de date est celui-ci : DD/MM/RRRR

    Cette solution fonctionne uniquement que si on se déconnecte pas de la session courante, après que ces commandes aient été tapées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER session SET nls_date_format = 'DD/MM/RRRR HH24:MI:SS';
     
    commit;
    A partir de là si je tape cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select VALUE from V$NLS_PARAMETERS where PARAMETER='NLS_DATE_FORMAT';
    ma date est bien sous le format DD/MM/RRRR HH24:MI:SS

    Mais dés que je me déconnecte et connecte dans la foulée à ma session, le format de date redeviens le même qu'avant ma tentative de modification du format de date, c'est à dire : DD/MM/RRRR

    Ma question est donc de savoir, comment faire pour rendre la modification du format de date permanente et persistante pour toutes les sessions ou une session particulière???

    P.S : le problème est le même, que je tape les commandes sous un compte utilisateur lambda ou le compte SYSTEM.

    Merci d'avance pour vos réponses,

    Cordialement Alino.
    Dernière modification par Invité ; 06/07/2010 à 17h39.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pas besoin de faire un commit après un alter, vous ne modifiez pas de données juste du paramétrage.

    Au lieu de faire un alter session, vous pouvez faire un alter system.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas ce que c'est SPFILE et je ne pense pas avoir de fichier de configuration SPFILE. J'ai installé oracle de façon standard, sans rien modifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    -- Cette commande passe
    ALTER system SET nls_date_format='DD/MM/RRRR HH24:MI:SS' scope=SPFILE;
     
    -- Cette commande ne passe pas
    ALTER system SET nls_date_format='DD/MM/RRRR HH24:MI:SS' scope=BOTH;
     
    -- Cette commande ne passe pas aussi
    ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY/MM/DD';
    Néanmoins, je suis toujours au même point, ça ne modifie pas le format d'affichage de la date sous oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select VALUE from V$NLS_PARAMETERS where PARAMETER='NLS_DATE_FORMAT';
    Output : DD/MM/RR

    ????

  4. #4
    Membre éprouvé Avatar de Kazevil
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Par défaut
    bonjour,

    il y a une méthode assez simple, qui consiste à setter une variable d'environnement.

    Exemple sous UNIX:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
    ou

    mettre la commande dans le .profile

    Exemple sous Windows:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set NLS_DATE_FORMAT=DD/MM/YYYY HH24:MI:SS
    (Attention en Windows on ne met pas de ' ')

    ou la mettre dans les variables système.

    Cordialement

    Kaz

  5. #5
    Invité
    Invité(e)
    Par défaut Solution au problème
    Kazevil, je viens de tester sous la console ms-dos windows ton code et ça ne modifie pas le format de la date.

    Par contre je viens de trouver la solution, il faut donc créer un trigger qui se lance à chaque fois qu'un utilisateur tente de se connecter à la bdd (ce trigger change le format de la date pour la session active) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER NLS_CONFIG_TRG 
    AFTER LOGON ON DATABASE
    BEGIN
    	execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT="DD/MM/RRRR HH24:MI:SS"';
    END;
    /

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par alino-91 Voir le message
    Kazevil, je viens de tester sous la console ms-dos windows ton code et ça ne modifie pas le format de la date.

    Par contre je viens de trouver la solution, il faut donc créer un trigger qui se lance à chaque fois qu'un utilisateur tente de se connecter à la bdd (ce trigger change le format de la date pour la session active) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER NLS_CONFIG_TRG 
    AFTER LOGON ON DATABASE
    BEGIN
    	execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT="DD/MM/RRRR HH24:MI:SS"';
    END;
    /
    Pour vos besoin le trigger c'est une solution à eviter.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Très bien mnitu, pourrais-tu dans ce cas nous donner stp une solution qui fonctionne et qui soit plus propre que la technique du trigger?

    P.S : j'ai entendu parler de modification du dictionnaire de données utilisé par Oracle (via des commandes sql sous la console Oracle sql plus). Peut-être que la technique que tu vas proposer est celle-ci (si oui ou non, dans les deux cas je suis preneur).

    Cordialement Alino-91.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour controler un format de date
    Par mohamed_75 dans le forum IHM
    Réponses: 3
    Dernier message: 18/10/2010, 14h19
  2. [VB.net] problème de format de date
    Par cladsam dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/10/2005, 18h27
  3. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  4. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

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