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

SQL Oracle Discussion :

Function permettant d'envoyer une date en chaine de caractères


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Function permettant d'envoyer une date en chaine de caractères
    Bonjour,

    Je suis sur une function à premirère vue assez simple mais qui ne pose des difficultées;

    En paramètre 'in' je donne une date, cette dernière sera envoyée en chaine de caractère mais réduite d'un mois.

    Exemple de ce que je veux obtenir:

    J'appelle la fonction avec la date paramètre : '23/01/2008'
    et le résultat est : 01/12/2007 donc je réduit avec un mois et 23 jours

    Exmple 2 : je donne 26/12/2007 et le résultat est : 01/11/2007 donc je réduit d'un mois et 26 jours

    Voici la fonction que je pensée donner les bons résultats:
    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
     
     
    CREATE OR REPLACE FUNCTION dateEnChaineReleveTSP(d in DATE) RETURN VARCHAR2 IS 
     
    BEGIN
     
    IF ( TO_CHAR(d,'MM') = '1') THEN
     
    //Ligne de trace
    DBMS_OUTPUT.PUT_LINE('01/12/'||to_char(d,'YYYY')-1||' '|| '00:00:00');
     
    RETURN '01/12/'||to_char(d,'YYYY')-1||' '||'00:00:00';
     
    END IF;
     
     
    IF (LENGTH(TO_CHAR(d,'MM'))=1) THEN
     
    //trace
    DBMS_OUTPUT.PUT_LINE('01/0'||(TO_CHAR(d,'MM')-1) ||'/'||TO_CHAR(d,'YYYY')||' '|| '00:00:00');
     
    RETURN '01/0'||(TO_CHAR(d,'MM')-1) ||'/'||TO_CHAR(d,'YYYY')||' '|| '00:00:00';
     
    ELSE
     
    //trace
    DBMS_OUTPUT.PUT_LINE('01/'||(TO_CHAR(d,'MM')-1) ||'/'||TO_CHAR(d,'YYYY')||' '|| '00:00:00');
     
    RETURN '01/'||(TO_CHAR(d,'MM')-1) ||'/'||TO_CHAR(d,'YYYY')||' '|| '00:00:00';
     
     
    END IF;
    END;
    /
    Je me suis apperçu que finalement la fonction n'entre jamais dans les IF et execute à chaque fois ELSE.
    Avez - vous une idée pourquoi?
    J'ai beau cherché à changer les if les transformations de char en date et l'inverce mais pas de réusite.



    Merci d'avance pour aide.
    Martin

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Le code de la fonction est erronée puisque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(sysdate, 'MM') = '03'
    Ce n'est pas '3'.

    Mais ce que vous cherchez à accomplir peut se faire sans une nouvelle fonction!

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select to_char (trunc(sysdate - interval '1' month, 'MM'), 'dd/mm/yyyy hh24:mi:ss')
    from dual
    Consultant et formateur Oracle

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci
    Merci pour votre aide. La fonction a été remplacé par votre reqûête.
    J'ai utilisé 'trunc' au début mais l'option interval me manquait.

    Merci
    Martin

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

Discussions similaires

  1. [Débutant] Verifier le format d'une date en chaine et la transformer
    Par shaun_the_sheep dans le forum C#
    Réponses: 4
    Dernier message: 19/11/2012, 18h23
  2. [PHP 5.2] fonction permettant de verifier une date
    Par marclas dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2010, 08h41
  3. Réponses: 0
    Dernier message: 12/10/2009, 15h58
  4. transformer une date en chaine
    Par niko8181 dans le forum Webi
    Réponses: 2
    Dernier message: 29/09/2009, 13h09
  5. conversion d'une date en chaine de caracteres
    Par salmer dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/10/2006, 16h31

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