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 Date Abrégé


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Format Date Abrégé
    Bonjour,

    Je souhaite récupérer la valeur du jour au format abrégé Oracle mais j'obtiens des valeurs différentes en fonction de la base sur laquelle je travaille. J'utilise la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_char(sysdate,'DY','NLS_DATE_LANGUAGE=''FRENCH''') into myday from dual;
    Cette requête retourne la valeur "SA" sur une base 9i mais elle retourne "SAM." sur une base 11g.
    Je ne comprends pas d'où peut provenir cette différence de résultat.

    Lorsque j'utilise un autre langage que le français, je n'ai aucune différence de résultat entre les deux versions.

    Avez-vous une piste, une idée ?

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 82
    Points : 140
    Points
    140
    Par défaut
    Salut brlagl,

    Je n'ai pas d'Oracle 9i pour tester ta requête. Mais, si tu as effectivement la même requête renvoyant deux résultat différents sous deux versions différentes alors je te conseillerai d'appeler le support Oracle.

    Quoiqu'il en soit, je vois que tu retourne ce jour dans une variable. Personnellement, je pense que tu devrais utiliser le numéro du jour. Ainsi, tu restes indépendant de la langue. Quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 1 + FLOOR (SYSDATE - TRUNC (SYSDATE, 'IW')) FROM dual;
    .

    Te renverra toujours 1 si le jour est lundi et 7 si c'est dimanche. Peu importe les paramètres de la session ou de la base de données. Mieux vaut toujours préférer une solution indépendante de tout paramètres NLS_. Tu peux jamais être certain que ceux-ci ne changeront pas au niveau des sessions ou de ta base.


    A+

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 071
    Points
    8 071
    Par défaut
    Citation Envoyé par brlagl Voir le message
    Bonjour,

    Je souhaite récupérer la valeur du jour au format abrégé Oracle mais j'obtiens des valeurs différentes en fonction de la base sur laquelle je travaille. J'utilise la fonction suivante :

    select to_char(sysdate,'DY','NLS_DATE_LANGUAGE=''FRENCH''') into myday from dual;

    Cette requête retourne la valeur "SA" sur une base 9i mais elle retourne "SAM." sur une base 11g.
    Je ne comprends pas d'où peut provenir cette différence de résultat.

    Lorsque j'utilise un autre langage que le français, je n'ai aucune différence de résultat entre les deux versions.

    Avez-vous une piste, une idée ?

    Merci
    Effectivement, il y a eu un changement dans l'abréviation des jours de semaine et des noms de mois en français (et peut-être d'autres langues), qui est intervenue sous Oracle 10g, me semble-t-il, et pour une raison que j'ignore.

    Donc il faut adopter les nouveaux formats.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 071
    Points
    8 071
    Par défaut
    Citation Envoyé par amir. Voir le message
    Te renverra toujours 1 si le jour est lundi et 7 si c'est dimanche. Peu importe les paramètres de la session ou de la base de données. Mieux vaut toujours préférer une solution indépendante de tout paramètres NLS_.
    C'est malheureusement complètement faux, comme j'avais eu l'occasion de le montrer ici : http://www.developpez.net/forums/d87...e/#post4988269
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 82
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    C'est malheureusement complètement faux, comme j'avais eu l'occasion de le montrer ici : http://www.developpez.net/forums/d87...e/#post4988269

    Alors si je peux me permettre... Une année ISO commence toujours un lundi et termine toujours un dimanche. Peu importe le pays, la langue ou la configuration de l'utilisateur. Est-ce que vous avez un exemple qui en jouant sur les paramètres NLS (comme dans votre exemple listé) me reverrait un chiffre différent de 1 à 7 (1=lundi et 7=Dimanche) pour la requête suivante??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -- ALTER SESSION SET nls_territory = ALGERIA; AMERICA... 
    SELECT 1 + FLOOR (SYSDATE - TRUNC (SYSDATE, 'IW')) 
      FROM dual;
    Merci

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses, je vois que je n'ai apparemment pas d'autre choix que de m'adapter à ce nouveau format de date abrégé...

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 071
    Points
    8 071
    Par défaut
    Citation Envoyé par amir. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -- ALTER SESSION SET nls_territory = ALGERIA; AMERICA... 
    SELECT 1 + FLOOR (SYSDATE - TRUNC (SYSDATE, 'IW')) 
      FROM dual;
    J'ai eu le grand tort de répondre trop vite après une lecture en diagonale, sans m'arrêter sur votre formule, et en fonçant sur la phrase finale.

    Et effectivement, je n'ai pas d'exemple à vous proposer qui la prenne en défaut !

    Mes excuses donc, et coup de chapeau pour cette formule indépendante du paramétrage NLS.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Effectivement, il y a eu un changement dans l'abréviation des jours de semaine et des noms de mois en français (et peut-être d'autres langues), qui est intervenue sous Oracle 10g, me semble-t-il, et pour une raison que j'ignore.

    Donc il faut adopter les nouveaux formats.
    As-tu une documentation sur ce sujet stp ? J'ai beau chercher sur le support d'Oracle, je n'ai encore rien trouvé qui mentionne ce changement.

  9. #9
    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

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci à vous pour ces informations.
    Je vais donc changer le code de l'application.

  11. #11
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 071
    Points
    8 071
    Par défaut
    Pour ceux qui voudraient creuser le sujet, il y a une note Metalink dédiée aux changements NLS intervenus en 10g : 292942.1.

    On y apprend par exemple que la liste des modifications figure dans ORACLE_HOME/nls/data/old/data_changes.htm
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

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

Discussions similaires

  1. [Toutes versions] Create table et format "date, abrégé"
    Par pc75 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/04/2014, 12h28
  2. Champ texte format Date, abrégé vide
    Par Junior_jef dans le forum IHM
    Réponses: 10
    Dernier message: 03/07/2007, 14h25
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 11h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 18h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 09h37

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