+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 30
    Points : 4
    Points
    4

    Par défaut Conversion date en nombre de mois

    Bonjour,
    j'aimerais savoir s'il ya une fonction en informix sql qui permet de convertir une date en nombre de mois.
    Exemple: date = dd/mm/yyyy alors
    convertDateToMonths(date) = yyyy x 12 + mm.

    J'ai cherché mais je n'ai rien trouvé vu aussi que informix est assez vieux et moins utilisé.

    Merci pour vos réponses.
    Cordialement.

  2. #2
    Membre actif
    Homme Profil pro Eric Vercelletto
    Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Inscrit en
    octobre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Vercelletto
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2010
    Messages : 101
    Points : 155
    Points
    155

    Par défaut

    Bonjour,


    1) Informix n'est pas vieux ni moins utilisé, vu que la dernière release 11.70 xC5 date de fin mai, qu'il sort en moyenne trois ou 4 maintenance releases par an depuis 2006 et qu'une major release est dans les starting blocks...
    Informix est effectivement moins mentionné dans la presse, mais certainement pas chez les clients, et la concurrence devrait aussi se faire du souci avec la prochaine major release qui va soirtir dans qq mois...

    2) un nombre de mois par rapport à quoi ou à quand ? Est-ce un intervalle entre 2 dates ou bien un nombre de mois depuis l'an zéro de notre calendrier, comme ton intitué tend à montrer?

    Il existe les fonctions SQL year(date), month(date), day(date) qui portent sur les dates,et qui peuvent t'aider à résoudre ton problème, sinon rien ne t'empêche de créer une procédure stockée ou fonction qui exécute ce que tu décris. C'est très simple et rapide à mettre en oeuvre, et ça simplifiera le code source.
    Sinon, si l'on soustrait une date à une autre date, on obtiendra un nombre de jours que l'on peut ensuite diviser par un algorythme tenant compte des années bissextiles, et en faire une fonction ou procédure stockée.

    Sinon vas chercher dans le Software Repository de l'International Informix User Group, il y a peut être des modèles approchant de ce que tu veux faire.

    c'est ici

  3. #3
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 30
    Points : 4
    Points
    4

    Par défaut

    Bonjour,
    merci pour votre réponse et surtout pour les informations concernant informix, j'ignorais complètement.
    Vous venez de corriger une de mes erreurs, je croyais que la différence entre deux dates retournaient une date et donc voilà ce que je faisais:

    Code :
    1
    2
    3
    d1 = CURRENT
    d2 = date('2011-06-02')
    convertDiffDateToMonth(d1, d2) = year(d1 - d2) * 12 + month(d1 - d2)
    Si je vous ai bien saisi, d1-d2 me retourne le nombre de jours entre ces deux dates.
    Donc je me suis planté grave!!!
    Je suis allé sur le site "International Informix Users", je me suis un peu perdu.
    Pouviez-vous me donner davantage d'indications pour résoudre ce problème.

    Merci.
    Cordialement.

  4. #4
    Membre actif
    Homme Profil pro Eric Vercelletto
    Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Inscrit en
    octobre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Vercelletto
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2010
    Messages : 101
    Points : 155
    Points
    155

    Par défaut

    Pour avoir le nombre de mois, il suffit "à peu près" de faire
    (d2-d1)/30

    Sur iiug.org, les scripts et codes source sont classés par thème
    l'index global est ici

    plein de bonnes choses à voir
    E.

  5. #5
    Membre du Club
    Inscrit en
    juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juillet 2010
    Messages : 33
    Points : 43
    Points
    43

    Par défaut

    Bonjour,

    La fonction "built-in" MONTHS_BETWEEN() permet cela très facilement.

    Extrait de la description dans la documentation en ligne:
    ------
    The value returned is a DECIMAL data type, representing the difference between the two arguments, expressed as a DECIMAL value in units based on 31-day months. If the first argument is a point in time later than the second argument, the sign of the returned value is positive. If the first argument is earlier than the second argument, the sign of the returned value is negative
    [...]
    ------

    Référence de la doc en ligne de cette fonction:
    http://publib.boulder.ibm.com/infoce...s_sqs_1537.htm


    Hope this help.

  6. #6
    Membre actif
    Homme Profil pro Eric Vercelletto
    Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Inscrit en
    octobre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Vercelletto
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Achitecte Informix SGBD et applications - IBM Champion - Data Management - Board of Directors IIUG
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2010
    Messages : 101
    Points : 155
    Points
    155

    Par défaut

    Bonjour,


    je te reconseille vivement de te plonger dans cet excellent (comme toujours) article de Jacques 'Mr Datablades' Roy. Une excellente introduction sur la création de fonction 'user defined' qui traite, par chance pour toi, de la manipulation des types de données 'dates' et associés.

    Tu comprendras que si la fonction dont tu rêves n'existe pas, il ne te reste qu'à la construire.

    Il ne parle pas des fonctions user defined construites à partir de java, de C ou 4GL, mais saches également que cela est possible.

    Jacques est l'un des architectes d'Informix, originaire du Québec, et il est très souvent présent aux réunions de l'UGIF (User Group Informix France), qui se tiennent environ 3 ou 4 fois par an, et dont le prochain se tiendra le 3 octobre chez IBM à Bois Colombes.


    Je ferai une annonce en temps voulu sur le village informix

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •