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

Requêtes et SQL. Discussion :

Calculer l'ancienneté (année/Mois/Jours)


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Calculer l'ancienneté (année/Mois/Jours)
    Bonjour ou bonsoir à tous !!

    Je cherche à calculer l'ancienneté sous la forme année;mois;jours dans une requete.

    J'ai un champs [DateEmbauche] format Date/Heure.
    A l'heure actuelle je me sert de la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ancienneté: DiffDate("aaaa";[DateEmbauche];Date())+(Format(Date();"mmaa")<Format([DateEmbauche];"mmaa"))
    Si quelqu'un pouvais m'aider, par avance, merci.

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tout dépend la règle de calcul que vous souhaitez utiliser.

    Salarié embauché le 29/02/2004, quelle ancienneté au :

    29/03/2004 ?
    30/03/2004 ?
    28/02/2005 ?
    1/03/2005 ?

    Toutes les années n'ont pas le même nombre de jours

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonsoir,

    La formule actuelle donne le nombre d'années d'ancienneté, non ?

    Sur le même principe, le nombre de mois est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(month(embauche)<month(date()), month(embauche)-month(date()+12, month(embauche)-month(date())+iif(day(embauche)<day(date),-1,0)
    Et le nombre de jours à 1 ou 2 jours près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(day(embauche)<day(date), day(embauche)-day(date)+30, day(embauche)-day(date))

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Calculer l'ancienneté (année/Mois/Jours)
    D'abords merci pour vos réponses.Oui ma formule donne bien le nombre d'année (Qui n'est pas la mienne mais que j'ai récupérer sur ce forum) mais j'aurais aimé qu'elle me donne aussi année/mois/jour
    Exple : 1 an 4 mois 12jours
    Je vais regarder avec la formule de nico84 et voir si j'arrive à obtenir ce que je cherche à faire.
    Si j'arrivais à avoir par exemple: 1 an 4 mois ce serais déjà génial pour mes besoins .

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonsoir,

    Je précise que (sauf erreur) ma formule renvoie le nombre de mois et de jours au-delà des années pleines et non depuis le début

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Calculer l'ancienneté (année/Mois/Jours)
    Nico84,je regrette mais ta formule ne pas retourné ma demande (sauf erreur de ma part).Par contre en partant de ta formule j'ai peux t'être trouvé mon bonheur.J'aimerais que tu la vérifie toi ou un autre .
    Champ[DateEmbauche] format Date/Heure:
    Ancienneté: DiffDate("aaaa";[DateEmbauche];Date()) & " Ans " & DiffDate("a";Mois([DateEmbauche]);Mois(Date())) & " Mois"
    Attention respecter les espaces.
    Je ne sais pas encore comment vous arriver a mettre la formule dans le cadre.
    Veuillez m'excuser.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Calculer l'ancienneté (année/Mois/Jours)
    Non après une ultime vérification ,elle ne fonctionne pas toujours.
    Zut,Zut et zut
    Si quelqu'un peux m'aider ....
    En attendant je continu mes recherches.
    A+ à tous

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    C'est vrai qu'il y avait encore un peu de travail dans mon premier post mais serait trop beau si c'était si simple

    Une valeur approchée pas trop mauvaise du nombre de mois (en plus des années ci dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fix((date()-embauche)/365.25*12)-fix((date()-embauche)/365.25)*12
    La totale pour le meme prix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    années : year(date())-year(embauche)+iif(format(date(),'mmdd')<format(embauche,'mmdd'),-1,0)
    mois : iif(format(date(),'mmdd')<format(embauche,'mmdd'),month(date())-month(embauche)+12, month(date())-month(embauche))+iif(day(date())<day(embauche),-1,0)
    jours :  iif(day(date())<=day(embauche), day(date())-day(embauche)+day(date()-day(date())-1), day(date())-day(embauche))

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Calculer l'ancienneté (année/Mois/Jours)
    Je pense y être arrivé grace à nico84 !!!!
    Sans son aide je n'y serais jamais arrivé(Un grand merci a toi)
    Maintenant il faut la vérifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ancienneté: DiffDate("aaaa";[DateEmbauche];Date())+(Format(Date();"mmaa")<Format([DateEmbauche];"mmaa")) & " ans " & VraiFaux(Format(Date();'mm"aa"')<Format([DateEmbauche];'mm"aa"');Mois(Date())-Mois([DateEmbauche])+12;Mois(Date())-Mois([DateEmbauche]))+VraiFaux(Jour(Date())<Jour([DateEmbauche]);-1;0) & " mois"
    Respecter les espaces.
    On doit obtenir le résultat sous la forme:
    --ans--mois
    Exple:12ans4mois

  10. #10
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Citation Envoyé par coyote06 Voir le message
    VraiFaux(Format(Date();'mm"aa"')<Format([DateEmbauche];'mm"aa"')
    Un dernier avant d'aller au lit : c'est quoi ce format ??? Il faut mois puis jour sinon ça ne marche pas : 'mmdd' en anglais, 'mmjj' en français ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Ecoute après plusieurs essais cela fonctionne bien.
    Pour le format je ne peux dire pourquoi cela fonctionne car c'est une erreur de frappe...
    J'ai essayé en modifiant tel que tu le fais remarquer et cela ne fonctionne plus.
    Aussi la question restera sans réponse...
    Je vais me permettre de mettre résolu est passé à autre chose.
    En tout cas encore "Un grand Merci à toi !!!"

    Psje cherche toujours à savoir comment tu met la formule dans le cadre)
    Je suis encore un bleu.

  12. #12
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Pour le cadre bleu il faut sélectionner le texte puis cliquer sur l'icone #

    Avec un format mm sans jj ça marche aujourd'hui (sauf pour un embauché en fin de mois mais c'est rare) parce qu'on est le 29 mais dans 2 jours ça va se tromper d'un mois

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    J'ai modifier la formule en faissant ta corection est elle fonctionne.
    Je a testerais a nouveau dans 2 jours.
    A+

+ 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. 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
  3. Calcul années, mois, jours entre 2 dates
    Par MuLog dans le forum SQL
    Réponses: 12
    Dernier message: 14/09/2010, 11h57
  4. [V6] Calcul d'une durée en année mois jours
    Par herve rennes dans le forum Deski
    Réponses: 7
    Dernier message: 11/02/2009, 23h37

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