Claculer age exact a partir d'une date de naissance [Résolu]

Messages postés
63
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
1 avril 2018
- - Dernière réponse : cs_jolicoeur79
Messages postés
63
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
1 avril 2018
- 11 janv. 2016 à 18:16
Bonjour,
et bonne année 2016
j'ai un table sous mysql qui contient une date_naissance varchar(10)
qui contient des donnees soit sous format 1980/05/20 ou 1985
et je voudrais calculer age exact;
apres des recherche sur internet j'ai trouver ce code qui calcule age exact :

SELECT *,
YEAR(CURDATE()) - YEAR(`date_naissance`) -
IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(`date_naissance`), '-', DAY(`date_naissance`)) ,'%Y-%c-%e') > CURDATE(), 1, 0)
AS age
FROM `t_table`

le resultat pour les date sous format aaaa/mm/jj se calcul bien
mais pour les format aaaa donne le résultat null

date_naissance | age
1978/12/23 | 37
1985 | Null

est ce que quelqu'un peut m'aider pour améliorer cette requette pour claculer les deux format
et merci

--
Afficher la suite 

4 réponses

Messages postés
25949
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2019
313
0
Merci
Bonjour,


j'ai un table sous mysql qui contient une date_naissance varchar(10)

Aie .... pourquoi utilises tu un varchar pour stocker une date ????
Une date .... ça se stocke via un DateTime ou un TimeStamp !
Donc au lieu de stocker tes dates au format aaaa/mm/dd .... enregistres les au format yyyy-mm-dd (dans un champ de type datetime). Tu verras alors que leur manipulation via des requête sera beaucoup (mais alors vraiment beaucoup ) plus simples.


Commenter la réponse de jordane45
Messages postés
63
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
SALUT
JORDANE
je suis tout à fait d'accord avec vous ; mais lorsque je rejoint la société j'ai trouve la base est créé comme ça a cause il y a des gens qui ne rappelle pas de leur date de naissance exact donc je suis obliger de saisir la date sur format yyyy sans ajouter yyyy/01/01
mais dans les statistiques trimestrielle je considere les format yyyy sont saisie sous format yyyy/01/01 .
et merci ;)
Commenter la réponse de cs_jolicoeur79
Messages postés
245
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
14 août 2018
0
Merci
Bonjour,
voila la requette qu'il te faut
SELECT DATEDIFF(year,'date_naissance',getedate()) AS Age


en gros voila la syntax
DATEDIFF(datepart,startdate,enddate)
nabil-bago
Messages postés
245
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
14 août 2018
-
pour plus d'info regardez ce tuto

http://www.w3schools.com/sql/func_datediff.asp
Commenter la réponse de nabil-bago
Messages postés
63
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
salut tout le monde
j'ai résolu ce problème avec ce code :

 if ( LENGTH(`dat_naissance`)=10,(YEAR(CURDATE()) - YEAR(`dat_naissance`) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(`dat_naissance`), '-', DAY(`dat_naissance`)) ,'%Y-%c-%e') > CURDATE(), 1, 0)),(YEAR(CURDATE()) - YEAR(CONCAT(dat_naissance,'-','01','-','01')) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', '01', '-', '01') ,'%Y-%c-%e') > CURDATE(), 1, 0))) as age


merci pour vous
et j'attend votre observation pour ce code

@+
Commenter la réponse de cs_jolicoeur79