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

Deski Discussion :

Calcul d'une durée en année mois jours [V6]


Sujet :

Deski

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Calcul d'une durée en année mois jours
    bonjour

    je viens de découvrir ce forum et étant utilisateur quotidien du BO (BO Reporter version 6.5 SP 4) j'en profite pour poser une question

    Mon problème est le suivant : j'aimerai pouvoir calculer une durée entre deux dates sous la forme année mois jours, apparemment il n'y a pas de fonction intégrée dans BO pour cela.

    jusqu'à présent je me débrouillais avec des variables intermédiaires pour calculer ce type de durée sur la base d'année à 365 jours et de mois à 30 jours, mais les résultats sont approximatifs et ne conviennent pas aux utilisateurs.

    Par exemple une durée entre le 01/05/2008 et le 31/07/2008 donne 92 jours (fonction JoursEntre +1 - date de début et de fin incluse dans la durée - ) soit 3 mois et 2 jours alors que je devrais avoir 3 mois et 0 jours.

    Toute idée ou suggestion sera bienvenue

    PS : j'ai parcouru tout le forum mais n'ai rien trouvé qui correspondait à mon problème, si j'ai raté un épisode merci de me donner le lien du sujet qui en traite.

  2. #2
    Membre expérimenté
    Avatar de Julien59
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 142
    Points : 1 458
    Points
    1 458
    Par défaut
    Bonjour,

    quel est ton SGBD ?
    Où souhaites tu faire cette formule ? Dans le rapport ou directement dans un objet BO dans l'univers ?
    Je pense pouvoir te donner une réponse si tu travailles via oracle ou directement sur le rapport, mais ca ressemblera à de la bidouille...

    Je n'ai pas BO à cet instant, donc je n'ai pas toutes les formules en tête, et la réponse que je donnerai sera pour BO XI et non pour BO 6. En espérant qu'il y ait les mêmes fonctionnalités...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    le rapport est alimenté par une requête en sql à la carte (bdd en informix), je cherche à utiliser la formule directement dans le rapport mais peut m'importe que le calcul se fasse au niveau du sql ou au niveau du rapport

  4. #4
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonsoir
    Peut-être pourrais tu t'inspirer de ça :
    Article sur l'utilisation étendue des fonctions DATE
    et notamment
    I-C. DATES RELATIVES
    I-D. DUREES

    Voici une piste :
    Nb de mois = Nombre de mois entiers entre DateDébut et DateFin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisEntre(DateDébut,DateFin)
    Nombre de jours en complément des mois entiers Nbj
    Deux cas de figure selon les dates Début et Fin :

    1) Si jour du mois de Fin >= Jour du mois de Début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Nbj = NuméroDuJourDuMois(Fin)-NuméroDuJourDuMois(Début)
    2) Si jour du mois de Fin < Jour du mois de Début
    Nbj = Jour du mois de la date de Fin + ( Dernier jour du mois précédent de Fin - Jour du mois de la date de Début )
    Le dernier jour du mois précédant la date de Fin est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateRelative([Fin] , - NuméroDuJourDuMois([Fin]))
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nbj = NuméroDuJourDuMois(Fin) 
    + ( DateRelative([Fin] , - NuméroDuJourDuMois([Fin])) 
    - NumeroDuJourDuMois(Début) )
    Exemple 1 : du 06/02/2009 au 10/05/2009
    Nb de mois = Nombre de mois entiers entre DateDébut et DateFin= 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisEntre(DateDébut,DateFin)
    Nombre de jours en complément des mois entiers Nbj
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si(NuméroDuJourDuMois(Fin) >= NuméroDuJourDuMois(Début))
    Alors (NuméroDuJourDuMois(Fin) - NuméroDuJourDuMois(Début))
    Sinon (NuméroDuJourDuMois(Fin) 
    + ( DateRelative([Fin] , - NuméroDuJourDuMois([Fin])) 
    - NumeroDuJourDuMois(Début) ))
    10 >= 6 donc Nbj = 10-6 = 4

    Exemple 2 : du 10/02/2009 au 06/05/2009
    Nombre de mois = 3
    6<10 donc
    Nbj = 6+(30-10)=26

    Bon vu qu'il est très tard et que j'ai fait ça de tête sans BO va falloir vérifier sérieusement

  5. #5
    Membre expérimenté
    Avatar de Julien59
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 142
    Points : 1 458
    Points
    1 458
    Par défaut
    Désolé, je viens seulement d'avoir le temps de repasser... Merci donc à Bruno pour cette intervention :p

    Si jamais ca ne fonctionne pas, tiens nous au courant, j'essaierai à mon tour de te proposer quelque chose, mais Bruno se trompe rarement même de tête à 2h du matin !

    Bon courage

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    bonjour

    je tarde un peu à répondre et en plus pour dire qu'il y a un problème

    en effet la formule mélange des données numériques et des données dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si(NuméroDuJourDuMois(Fin) >= NuméroDuJourDuMois(Début))
    Alors (NuméroDuJourDuMois(Fin) - NuméroDuJourDuMois(Début))
    Sinon (NuméroDuJourDuMois(Fin) 
    + ( DateRelative([Fin] , - NuméroDuJourDuMois([Fin])) 
    - NumeroDuJourDuMois(Début) ))
    d'où un message "type de données incorrect"
    en fait j'avais bien pensé à une solution de ce genre mais je ne sais pas comment déterminer le nombre de jour du mois (28, 29, 30 ou 31) de manière automatique pour appliquer la formule.

    En fait ce qu'il me faudrait c'est une fonction du genre Nombredejoursdumois pour pouvoir utiliser ta formule.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    bon ca avance ...

    en remplacant la fonction
    par la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NuméroDuJourDuMois(DernierJourDuMois([Fin])
    je commence a trouver des trucs intéressants

    la suite au prochain épisode

  8. #8
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Citation Envoyé par herve rennes Voir le message
    bon ca avance ...

    en remplacant la fonction
    par la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NuméroDuJourDuMois(DernierJourDuMois([Fin])
    je commence a trouver des trucs intéressants

    la suite au prochain épisode
    tout à fait
    cette étourderie de ma part aura eu le mérite de te faire potasser la formule plutôt qu'un simple copier coller
    Tu vas y arriver

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

Discussions similaires

  1. Calcul de durée entre deux dates en années, mois, jours, heures, minutes, secondes et reste
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 02/10/2015, 12h31
  2. [Vxi3] Calcul d'une période en Années, Mois et jour ?
    Par Sarturi dans le forum Webi
    Réponses: 1
    Dernier message: 09/02/2015, 11h27
  3. [AC-2007] Reunir en un champs une date separé (année, mois ,jour)
    Par mbarrette3 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/10/2011, 14h48
  4. Calcul d'écart de date (année, mois, jour,etc)
    Par le.dams dans le forum Access
    Réponses: 7
    Dernier message: 08/01/2011, 17h47

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