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

cs_jolicoeur79 60 Messages postés samedi 2 octobre 2004Date d'inscription 12 février 2017 Dernière intervention - 3 janv. 2016 à 00:22 - Dernière réponse : cs_jolicoeur79 60 Messages postés samedi 2 octobre 2004Date d'inscription 12 février 2017 Dernière intervention
- 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 

5 réponses

Répondre au sujet
jordane45 19221 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 3 janv. 2016 à 00:52
0
Utile
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
cs_jolicoeur79 60 Messages postés samedi 2 octobre 2004Date d'inscription 12 février 2017 Dernière intervention - 3 janv. 2016 à 22:13
0
Utile
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
nabil-bago 244 Messages postés mercredi 22 mai 2013Date d'inscription 25 avril 2017 Dernière intervention - 10 janv. 2016 à 15:15
0
Utile
1
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 244 Messages postés mercredi 22 mai 2013Date d'inscription 25 avril 2017 Dernière intervention - 10 janv. 2016 à 16:16
pour plus d'info regardez ce tuto

http://www.w3schools.com/sql/func_datediff.asp
Commenter la réponse de nabil-bago
cs_jolicoeur79 60 Messages postés samedi 2 octobre 2004Date d'inscription 12 février 2017 Dernière intervention - 11 janv. 2016 à 18:16
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.