Le 26/12/2013 21:59, Docgranville a écrit :
Le 26/12/2013 17:03, Guy GOURLAIN a écrit :
Bonjour,
j'ai une liste de noms avec les dates de naissance correspondantes.
Je souhaite calculer l’âge de chaque personne (âge+nombre de mois).
j'ai trouvé un exemple dans la FAQ (signé Pierre Yves Samyn) mais je
ne sais pas comment poser la requête et je ne trouve pas la commande
SQL indiquée.
Comment faire ?
En attendant bonne fin d'année à toutes et tous.
Guy
Bonsoir,
Tu ne le précises pas, mais comme tu parles de SQL, je suppose que
nous sommes dans Base?
Par ailleurs, tu ne précises pas non plus à partir de quand ton calcul
doit incrémenter le compteur de mois ; est-ce que l'on compte
lespériodes de 30 jours ? ou bien s'agit-il de décompter les mois
civils et donc les périodes de 28 (ou 29), 30 et 31 jours exactement ?
ou bien encore celles -moyennes- de 365,25/12 ?
Tes amies, dans ce domaine sont les fonctions suivantes :
- DATEDIFF(x,y) ; cette fonction te donnera le nombre de jours
séparant la date x de la date y; c'est le résultat de la soustraction
(x-y) ;
- CURDATE() ; te renvoie la date courante ; ça évite d'entrer une date
en "dur" dans la requête et d'avoir à la modifier chaque fois que l'on
veut s'en servir ;
- [a DIV b] ; c'est la fonction division entière ; par exemple "7 DIV
3" te renvoie 2 ; ici, elle servira à déterminer le nombre entier
d'années écoulées, en pratiquant la division entière du résultat de
DATEDIFF(x,y) par 365,25 (le nombre de jours dans une année) ; le
problème (je crois) c'est que DIV n'est pas toujours très à l'aise
avec certaines formes de nombres ; ainsi, la formule "365 DIV 365,25"
renvoie-t-elle le résultat "1", ce qui est tout de même relativement
inexact... ; ça peut-être gênant lorsque l'on est à la veille de la
date anniversaire.
- MOD(a,b) ; cette fonction sort le reste de la division de a par b ;
par exemple MOD(14,3) donne 2 (puisque 14 divisé par 3 donne 4 et il
reste 2).
Encore faut-il savoir quel niveau de précision tu comptes atteindre ;
est-ce qu'une erreur de un ou deux jours (impliquant donc qu'à
certaines date particulières, le résultat anticipera ou retardera
l'octroi d'un mois plein supplémentaire) est acceptable ou est-il
indispensable que l'outil ne puisse jamais être pris en défaut ?
A+
Je n'ai pas prêté attention et n'ai donc pas percuté que l'exemple
relevé était dans Base (que je ne maîtrise pas du tout).
j'ai essayé de calculer les âges dans calc en insérant la fonction Dates
& Heures > Années
J'ai inséré la date initiale, la date de fin et le choix du mode se
réduit à 0 pour le nombre d'années dans l'intervalle (1 pour les années
de calendrier)
Je n'ai pas de résultat sinon "0"
Autrement je n'ai pas besoin d'un résultat deux jours près.
A +
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.