Maison >base de données >tutoriel mysql >Comment puis-je calculer avec précision l'âge en années à partir d'une date de naissance à l'aide de SQL ?
Un calcul précis de l'âge en SQL, basé sur une date de naissance, nécessite que la colonne de date de naissance soit d'un type de données datetime
ou date
valide. Si votre colonne de date de naissance est actuellement nvarchar(25)
, vous devez d'abord la convertir dans un format de date approprié.
En supposant que cette conversion soit terminée, examinons les méthodes efficaces de calcul de l'âge :
Méthode 1 : Une approche simplifiée (approximative)
Cette méthode utilise DATEDIFF
pour trouver la différence en heures entre la date actuelle et la date de naissance, puis divise par le nombre approximatif d'heures dans une année (8766.0) :
<code class="language-sql">SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal</code>
Cela donne un âge décimal, mais sa précision est limitée en raison des variations du nombre de jours par mois et des années bissextiles.
Méthodes améliorées et plus précises :
Calcul de l'âge entier :
Cette méthode calcule l'âge en années entières :
<code class="language-sql">SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears</code>
Calcul précis de l'âge décimal :
Pour un âge décimal plus précis, cette méthode améliorée est recommandée :
<code class="language-sql">SELECT 1.0* DateDiff(yy,@Dob,@Now) +CASE WHEN @Now >= DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)) THEN ( 1.0 * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) ELSE -1 * ( * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) END AS AgeYearsDecimal</code>
Cette méthode avancée prend en compte les années bissextiles et fournit une représentation décimale très précise de l'âge en années. C'est la méthode privilégiée pour les situations nécessitant des calculs d'âge précis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!