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 :

Fonction de transformation spéciale de DATE vers NBR+Lettre


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 63
    Points
    63
    Par défaut Fonction de transformation spéciale de DATE vers NBR+Lettre
    Bonjour à tous!

    Existe t'il une fonction date permettant de transformer une date en un numéro de semaine de l'année et une lettre représentant le jour de la semaine.

    je m'explique, un nombre variant de 1 a 52 suivant la semaine dans laquelle on se trouve et A B C D E F ou G suivant qu'on est lundi mardi ectect

    on se retrouve avec 1A pour le 1er janvier 2A pour le 8 janvier, ou 44C pour le mercredi 27 octobre 2004...

    J'ai deja lu pas mal de doc pour les date et si ya plein de fonction intéressante, celle ci n'a pas l'air d'exister. Auriez vous eu vent d'une fonction dans ce style (si oui ou? ou? )

    Merci d'avance

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Pour le numéro de la semaine tu peux regarder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select to_char(sysdate, 'WW') from dual;
     
    TO
    --
    49
    Pour le jour de la semaine tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select chr(ascii('A') + to_number(to_char(sysdate, 'D'))-1) from dual;
     
    CH
    --
    A
    to_number(to_char(sysdate, 'D'))-1 : renvoie le jour de la semaine entre 0 et 6
    ascii('A') est le code ASCII de A
    chr permet de reconstruire un caractère à partir de son code ASCII. (on suppose que 'A', 'B'... sont consécutifs ce qui semble être le cas).


    Laly.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 63
    Points
    63
    Par défaut


    je demande si il existe la fonction et voila qu'en quelques minutes j'ai une solution pour la remplacer (enfin pour le faire puisque visiblement elle n'existe pas)



    merci a toi lalystar

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 63
    Points
    63
    Par défaut
    Bon voila j'ai realisé cette petite procédure et ca marche nickel seul petit probleme, pour une année donnée , le premier jour n'est pas lundi, dans ce cas la le lundi de la sem suivante est considéré comme etant quand meme le 1A qui en realité est plus récent que le 1C (exemple pour 2004)

    je reflechis a comment arranger cela

  5. #5
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour Aeternus,

    Et que se passe t il si tu utilises to_char(sysdate, 'IW') (I comme ISO) ?


    Laly.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 63
    Points
    63
    Par défaut
    C'est amusant parce que c'est justement ce que je voulais essayer en ayant vu ce format dans le guide du PL/SQL

    J'essaye et je reviens dire ce que ca donne

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 63
    Points
    63
    Par défaut
    Voila le code final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DECLARE
     
      Fifo VARCHAR2(3);
     
    BEGIN
     
      Fifo := TO_CHAR(:VARIABLE.DATE_DEPART, 'IW');
      Fifo := Fifo || CHR(ASCII('A') + TO_NUMBER(TO_CHAR(:VARIABLE.DATE_DEPART, 'D'))-1);
     
    END;
    La date de départ etant un champ dans une forme d'oracle forms dans le bloc de données variable chez moi

    Et voila, tout est bien et tout est beau car ca marche nickel

    Merci bcp Lalystar (Quelle star cette laly )

  8. #8
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut

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

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. [WD-2010] collage spécial cellule date de excel vers word
    Par guizaniseifislam dans le forum Word
    Réponses: 6
    Dernier message: 27/08/2012, 14h19
  3. Réponses: 4
    Dernier message: 14/11/2007, 11h07
  4. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  5. Import de date vers MSDE avec BCP
    Par slc dans le forum Outils
    Réponses: 4
    Dernier message: 16/08/2004, 12h28

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