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 :

probleme de date dans session NLS_DATE


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut probleme de date dans session NLS_DATE
    salut;

    J'aurai aimé savoir si quelqu'un a deja utilisé

    ALTER SESSION SET NLS_DATE='MM/DD/YYYY' ce genre d'expression ?

    Concretement, est cela va modifier le format au niveau de l'insertion des date dans ma session oracle.
    C'est à dire que ma base oracle n'accepte que les date au format DD/MM/YYYY et avec cette commande elle va les accepter au format MM/DD/YYYY ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Cela fixe le nouveau format pour votre session, c'est tout.
    Cela vous dispense de donner de nouveau le format dans une instruction To_Date() par exemple.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    j'ai pas trop saisi

    est ce qu'en faisant sa je pourrait inserer une date a ce format '02/28/2005'
    car quanf j 'essai j'ai toujours ce message d 'erreur sous oracle
    ORA-01843: not a valid month

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ce qui est absolument normal avec 'DD/MM/YYYY' et '02/28/2005'

    je ne connais effectivement pas de mois 28.......
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    tu dois vouloir parler de NLS_DATE_FORMAT.

    Ce paramètre fait partie du processus servant à entretenir la confusion que tout le monde fait au début entre le stockage de la date et l'affichage de la date.

    Oracle fonctionne un peu comme excel, c'est à dire qu'il y a un type unique de date qui est en gros un réel dont l'unité est le jour. Il n'y a nulle part de format d'affichage stocké dans la colonne.

    Il y a 2 fonctions importantes qui te permettent de transformer une date en chaine de caractère (affichable) et vice versa

    DATE -> CHAINE : to_char(date, format)

    CHAINE -> DATE : to_date (chaine, format)

    Normalement, quand tu veux afficher une date, tu dois utiliser to_char avec le format de ton choix. Et quand tu veux rentrer une date, tu dois utiliser to_date avec le format adapté à ta saisie.

    Cependant oracle te permet de faire cela de manière implicite, c'est à dire qu'il tolère que tu fasses un affichage direct de date (ex: select sysdate from dual) et aussi que tu fasse une entrée directe de date (ex: update ma_table set ma_date = '31/08/2006').

    Dans ces cas là il va rien te dire mais va faire tout seul le to_date ou le to_char. C'est la qu'intervient la valeur de NLS_DATE_FORMAT, elle va etre le paramètre que va utiliser oracle pour ces 2 fonctions.

    Ce système de conversion implicite est une calamité (ie les centaines de posts sur ce forum lié à ce problème) parceque ça induit des comportement différent d'un environnement à l'autre, d'un client à l'autre pour un meme code...

    dernier exemple en date, 2/3 jours de perdu sur un projet :
    http://www.developpez.net/forums/sho...d.php?t=202963

    C'est pourquoi je te conseille tres fortement de ne jamais t'en servir et de toujours utiliser les to_date et les to_char...

Discussions similaires

  1. [Dates] Probleme de date dans menu déroulant
    Par Comval dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2006, 09h43
  2. probleme de date dans liste deroulante
    Par sebos21 dans le forum Access
    Réponses: 3
    Dernier message: 25/05/2006, 00h43
  3. probleme de date dans la requete sql
    Par villasenjorjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/05/2006, 21h53
  4. Problème de date dans un script
    Par silef dans le forum Linux
    Réponses: 2
    Dernier message: 16/11/2004, 18h10

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