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

PL/SQL Oracle Discussion :

Format de date non valide


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Format de date non valide
    Bonjour,

    Je reçois des données qui proviennent de marchés financiers, donc en grand nombres. Je récupère plusieurs informations dont des dates sous le format AAAA-MM-JJ or dans Pl/SQL le format de DATE est JJ/MM/AA.

    Est ce que vous savez comment je pourrais récupérer mes dates au format AAAA-MM-JJ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il suffit juste de faire un alter session :
    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
     
    SQL> select sysdate from dual;
     
    SYSDATE
    ---------
    28-OCT-08
     
    SQL> alter session set nls_date_format='YYYY-MM-DD';
     
    Session altered.
     
    SQL> select sysdate from dual;
     
    SYSDATE
    ----------
    2008-10-28
    c'est le client qui change de format

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup Orafrance.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    hu hu hu, me revoila..

    J'ai bouclé le sujet trop tôt, sans tester, petit malin que je suis.

    J'ai fait la commande indiquée sous PL/SQL, je me retrouve toujours avec mes dates au format 29/10/2008 12:13:47

    Une idée Doc?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Comment récupères-tu ces données? via des tables?
    Si c'est dans des tables, le champ source est-il défini comme date ou varchar2?

    si ta source est définie comme une chaîne de caractère, tu devras faire une transformation dans le format que tu désires. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date(ta_date,'DD/MM/YYYY hh:mi:ss')

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par nbinot Voir le message
    je me retrouve toujours avec mes dates au format 29/10/2008 12:13:47
    Dans la table c'est une DATE point, il n'y a pas de format. C'est donc au moment du SELECT que tu dois appliquer le formatage. C'est où ton problème de format ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    j'ai cette table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create table SG_MSG_FIX_OUT (
    MSG_ID number(6),
    MARKET_MSG_ID varchar2(20),
    MSG_SEQ_NB number(4),
    MARKET_ID varchar2(10),
    CONTRACT varchar2(4) NULL,
    MEMBER_ID varchar2(10),
    MSG_DATE DATE,
    GATEWAY_NAME varchar2(10),
    MSG varchar2(1000));
    j'insère dans cette table des données du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into SG_MSG_FIX_OUT 
    (MSG_ID,MARKET_MSG_ID,MSG_SEQ_NB,MARKET_ID,MEMBER_ID,MSG_DATE,GATEWAY_NAME,MSG)
    values (73153,'20081027A0000000008',3,'MONEP-990','MONEP',2008-10-27,'MONEP-990','8=FIX.4.4\x019=352\x0135=AE\');
    ca ne fonctionne pas.
    j'ai donc essayé de remplacer comme ceci (en gras) mais rien n'y fait, j'ai toujours les dates en JJ/MM/AA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into SG_MSG_FIX_OUT 
    (MSG_ID,MARKET_MSG_ID,MSG_SEQ_NB,MARKET_ID,MEMBER_ID,MSG_DATE,GATEWAY_NAME,MSG)
    values (73153,'20081027A0000000008',3,'MONEP-990','MONEP',to_date('2008-10-27', 'YYYY-MM-DD'),'MONEP-990','8=FIX.4.4\x019=352\x0135=AE\');
    pour la méthode ALTER session SET nls_date_format='YYYY-MM-DD'; je ne peux pas le faire en fait car je n'ai pas les droits suffisants pour modifier DATE

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date('27/10/2008', 'DD/MM/YYYY')

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    oops, autant pour moi. C'est une petite erreur de recopie pardon.

    J'avais en effet écrit dans mon code to_date('2008-10-29', 'YYYY-MM-DD')

    Je veux un format de date YYYY-MM-DD et non pas DD/MM/YYYY pour info skuatamad.

    D'autres idées messieurs?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par orafrance Voir le message
    C'est donc au moment du SELECT que tu dois appliquer le formatage.
    je fais ca comment?

  11. #11
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Je ne comprends pas, ton insert modifié est bon, tu as une erreur ?

    Pour l'affichage à la selection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_char(MSG_DATE, 'YYYY-MM-DD')

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Je n'ai pas de message d'erreur mais lorsque je fais un select * from SG_MSG_FIX_OUT j'ai le date au format DD/MM/YYYY

    par contre avec SELECT to_char(MSG_DATE, 'YYYY-MM-DD') ca fonctionne, merci.

    c'est dommage que je sois obligé de passer par là pour avoir ma date dans le format yyyy-mm-dd...

    Je pense que ça vient du fait que le logiciel sur lequel je bosse contient + de 4 000 tables et que les dates ont du être standardisées pour être les même partout. Possibles?

  13. #13
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Non ça vient de tes paramètres NLS de session, regarde l'exemple d'orafrance du post 2.

    Et sinon un peu de lecture sur les NLS

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Grrrrrr, parfois l'informatique ca m'énerve, mais ca m'énerve!!!

    J'ai bien fait les manip du post 2, j'ai checké , j'ai bien mes dates au format que je veux mais rien à faire, ca ne fonctionne toujours pas!!!

    si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' ;
    ( oui j'ai trouvé la balise CODE!!!! )

    j'obtiens:

    mais si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sysdate from dual;
    J'obtiens




    Je vais me rabatre sur un trigger sur connexion et voir ce que ca donne. En cas je ferai une fonction qui changera ma date à la lecture dans mon programme Java. Mais je reste quand même sur ma faim

    Merci ami Skuatamad

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

Discussions similaires

  1. JXL : format de fichier non valide
    Par burhud dans le forum Documents
    Réponses: 6
    Dernier message: 17/11/2011, 14h18
  2. [AC-2007] Modification de format de date non souhaitée
    Par papimcha dans le forum Access
    Réponses: 10
    Dernier message: 03/05/2010, 14h16
  3. Réponses: 1
    Dernier message: 29/04/2010, 09h31
  4. date non valide + liste déroulante
    Par bigboy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/10/2009, 21h54
  5. [VB.Net] cast du type 'DataRowview' en type 'Date' non valide
    Par badnane2 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/06/2006, 15h50

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