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

Administration Oracle Discussion :

[9i] Nls_date_format = dd/mm/rr


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 155
    Par défaut [9i] Nls_date_format = dd/mm/rr
    Bonjour à tous,

    Suite de la discussion Que siginfie "RR" dans NLS_DATE_FORMAT=DD/MM/RR

    En réponse à Magnus, je crois que vous vous avancez un peu, voici ce qui est fait :

    Insertion de la date dans la bd :
    birth_date = to_date(to_char(birthDate), 'YYYYMMDD')
    avec birthDate (number(8) = 19490509).



    Après insertion des données, la requête :

    select to_char(birth_date, 'DD/MM/YYYY') from table1 where cle like '%1011219171';

    donne :

    09/05/2049

    Etrange non ?


    Voili, voila !

  2. #2
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    rien compris, même si tu as peut être raison !

    Tel que je vois la chose :

    select to_date('220773','ddmmRR') from dual ramène 22/07/1973 (correct)

    select to_date('220773','ddmmyy') from dual ramène 22/07/2073 (incorrect)

    En gros, utilisable par les furieux qui ont des digits "années" sur 2 chiffres. (au fou !! )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 155
    Par défaut
    ben c'est simple on a le format date sous oracle :

    NLS_DATE_FORMAT=DD/MM/RR


    on insère une date par :
    insert into toto (birth_date) values (to_date(to_char(birthDate), 'YYYYMMDD'))

    avec birthDate (number(8) = 19490509)


    Après insertion des données, le select

    select to_char(birth_date, 'DD/MM/YYYY') from toto where cle like '%toto';

    sur les données insérées donne :

    09/05/2049


    voili, voila !

    Ce qui me gène dans ton raisonnement et dans celui de Magnus, c'est que vous faites un select from dual, avec une table auriez-vous le même résultat ?

    Merci de votre aide.

    Cordialement.

  4. #4
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    je ne comprend rien (c'est une habitude, faut pas s'inquiéter ...)

    Si tu as NLS_DATE_FORMAT=DD/MM/RR, tes INSERT devraient se faire sur deux digits pour l'année, pas 4 ?!

    Sinon, quel intérêt d'un format aussi pénible ?

    Je vias essayer ton hsitoire sur une de mes base de tests, pour voir.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    J'ai quelques remarques bien que je n'arrive pas à reproduire sur 10gR1 le comportement que vous décrivez :
    - quand vous utilisez TO_CHAR, TO_DATE et TO_NUMBER, spécifiez systématiquement un masque de format après le 1er argument
    - évitez de donner le même nom à une variable locale (ou globale dans forms par exemple) et à une colonne d'une table que vous manipulez dans la même procédure / fonction / bloc anonyme (ex : birth_date)
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    10g SOC5> create table dvp(
      2    birth_date date);
     
    Table créée.
     
    10g SOC5>   
    10g SOC5> declare
      2    birth_date  number(8) := 19490509;
      3  begin
      4    insert into dvp (birth_date) values (to_date( to_char(birth_date, '99
      5                                                  'YYYYMMDD') );
      6    commit;
      7  end;
      8  /
     
    Procédure PL/SQL terminée avec succès.
     
    10g SOC5> 
    10g SOC5> alter session set nls_date_format = 'DD/MM/RR';
     
    Session modifiée.
     
    10g SOC5> select *
      2  from dvp;
     
    BIRTH_DA
    --------
    09/05/49
     
    1 ligne sélectionnée.
     
    10g SOC5> 
    10g SOC5> alter session set nls_date_format = 'DD/MM/YY';
     
    Session modifiée.
     
    10g SOC5> select *
      2  from dvp;
     
    BIRTH_DA
    --------
    09/05/49
     
    1 ligne sélectionnée.
     
    10g SOC5> 
    10g SOC5> alter session set nls_date_format = 'DD/MM/RRRR';
     
    Session modifiée.
     
    10g SOC5> select *
      2  from dvp;
     
    BIRTH_DATE
    ----------
    09/05/1949
     
    1 ligne sélectionnée.
     
    10g SOC5> 
    10g SOC5> alter session set nls_date_format = 'DD/MM/YYYY';
     
    Session modifiée.
     
    10g SOC5> select *
      2  from dvp;
     
    BIRTH_DATE
    ----------
    09/05/1949
     
    1 ligne sélectionnée.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 53
    Par défaut
    Avec le format RR oracle interpète les dates avec l'année sur 2 positions ( ) comme étant du 20eme siécle si les 2 chiffres vont de 50 à 99 et du 21eme siècle pour les chiffre allant de 00 à 49.

  7. #7
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Pour les jeunes bleu-bites (et autres apprentis sorciers), il fut un temps ou l'octet disque valait de l'or !
    Les années, en ces temps (pas si) éloignés, etaient codés sur 2 digits !
    Le format RR a permis, merci Allisson, de passer l'an 2000 sans trop de dégat !
    Plutôt bien venu à l'époque .

  8. #8
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Citation Envoyé par Garuda
    Pour les jeunes bleu-bites (et autres apprentis sorciers), il fut un temps ou l'octet disque valait de l'or !
    Les années, en ces temps (pas si) éloignés, etaient codés sur 2 digits !
    Le format RR a permis, merci Allisson, de passer l'an 2000 sans trop de dégat !
    Plutôt bien venu à l'époque .
    Et l'octet vaut toujours cher !!!

    peut-être que c'est moins visible, mais à coder comme des porcs en disant "on s'en fout, la RAM ça vaut que dalle et le disque, on en a en pagaille", au final on a des applis mauvaise qui rament en disant "pff.. on paye cher oracle pour rien, ça tient pas la charge !"

    Si on continuait à compter les octets au lieu de faire des BLOB à tour de bras, ça irait mieux et au moins, cela imposerait une vraie réflexion sur le schéma, les données et ce qu'il faut faire ou pas !

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 53
    Par défaut
    Citation Envoyé par Garuda
    Pour les jeunes bleu-bites..
    Je pense que certains ignorent jusqu'à l'existence de ce terme

  10. #10
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Bleu ou Bleu bite: soldat ayant peu de temps d'armée. Provient de la période révolutionnaire pendant laquelle les soldats de l'ancienne armée du roi avaient encore les uniformes blancs, alors que les conscrits étaient en bleu
    Source
    http://fr.wikipedia.org/wiki/Jargon_militaire

Discussions similaires

  1. [1.x] 'SESSION SET NLS_DATE_FORMAT
    Par benakacha dans le forum Symfony
    Réponses: 1
    Dernier message: 21/01/2010, 20h09
  2. paramètre nls_date_format à modifier pour la DB
    Par titi04 dans le forum Administration
    Réponses: 1
    Dernier message: 08/01/2009, 18h02
  3. probleme nls_date_format sous 10g express edition
    Par narkotik dans le forum SQL
    Réponses: 7
    Dernier message: 05/03/2008, 16h21
  4. Réponses: 15
    Dernier message: 22/02/2008, 14h50
  5. Que siginfie "RR" dans NLS_DATE_FORMAT=DD/MM/RR
    Par farenheiit dans le forum Administration
    Réponses: 4
    Dernier message: 06/07/2007, 09h50

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