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:
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:cry:.
Merci d'avance pour aide.
Martin