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

  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
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    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 habitué Avatar de Kazevil
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Points : 129
    Points
    129
    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 éminent sénior 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
    Points : 11 252
    Points
    11 252
    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.

  8. #8
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Salut,

    Des solutions vous ont été déjà proposées dans les précedants interventions.
    Voilà aussi une référence dans Globalization Guide.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Très bien, mais je tiens à ajouter que j'ai testé les précédentes solutions sous windows XP avec la dernière version d'oracle 10G express et sous ms-dos et toutes les précédentes solutions ne passent pas (à part celle du trigger).

    Je lirai votre lien incessamment sous peu, peut-être que j'y trouverai réponse à ma question.

    Cordialement Alino-91.
    Dernière modification par Invité ; 07/07/2010 à 17h56.

  10. #10
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par alino-91 Voir le message
    Très bien, mais je tiens à ajouter que j'ai testé les précédentes solutions sous windows XP avec la dernière version d'oracle 10G et sous ms-dos et toutes les précédentes solutions ne passent pas (à part celle du trigger).

    Je lirai votre lien incessamment sous peu, peut-être que j'y trouverai réponse à ma question.

    Cordialement Alino-91.
    Pour moi, ça marche (Xp et Oracle XE)
    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
     
    C:\Documents and Settings\mnitu>SET NLS_DATE_FORMAT=DD/MM/YYYY HH24:MI:SS
     
    C:\Documents and Settings\mnitu>sqlplus mni/mni
     
    SQL*Plus: Release 10.2.0.1.0 - Production on Mer. Juil. 7 16:34:54 2010
     
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     
     
    ConnectÚ Ó :
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
     
    SQL> select sysdate from dual;
     
    SYSDATE
    -------------------
    07/07/2010 16:35:00
     
    SQL>

  11. #11
    Invité
    Invité(e)
    Par défaut
    Très bien, je teste et je te tiens au courant.

    Merci pour ta réponse.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je viens de tester à l'instant. Ta solution fonctionne, mais uniquement si on ferme pas l'invite de commande ms-dos. Tu peux le constater par toi même :

    Si tu fermes toutes tes invites de commande et que tu ouvres une nouvelle invite de commande, tu verras que si tu fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sysdate from dual;
    tu auras en output :

    Donc toujours pas de persistance, problème toujours non résolu pour moi (à part via le trigger). Ta solution n'est valable chez moi que pour la session courante, mais dés que tu exit du shell sqlplus et de l'invite de commande ms-dos, adios la modification du format de date (même en faisant un joli commit avant les deux exit).

    Cordialement Alino-91.
    Dernière modification par Invité ; 07/07/2010 à 17h57.

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

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    pour la persistance, tu dervais essayer de setter la variable comme une variable d'environement Windows.
    Tu fais un clic-droit sur le poste de travail, puis propriétés.
    Là dans Avancé tu pourra ajouter une variable. Pense à te délogguer et relogguer pour qu'elle soit prise en compte.

    A mon avis ça devrait marcher.

    A++

    Kaz

  14. #14
    Invité
    Invité(e)
    Par défaut
    La dernière solution que tu as proposée Kaz fonctionne nickel, merci beaucoup.

+ 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