Maison > base de données > tutoriel mysql > Comment calculer avec précision l'âge dans SQL Server en utilisant la date de naissance ?

Comment calculer avec précision l'âge dans SQL Server en utilisant la date de naissance ?

Barbara Streisand
Libérer: 2025-01-22 13:26:09
original
508 Les gens l'ont consulté

How to Accurately Calculate Age in SQL Server Using Date of Birth?

Calcul précis de l'âge dans SQL Server en utilisant la date de naissance

SQL Server propose des méthodes efficaces pour calculer l'âge à partir d'une date de naissance. La fonction CAST() convertit facilement les chaînes de date de naissance en type de données DATE/DATETIME, permettant divers calculs de date, y compris la détermination de l'âge.

Considérez cet exemple de données :

ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00

Calcul de l'âge avec DATEDIFF()

La fonction DATEDIFF() calcule la différence entre deux dates. En le combinant avec GETDATE() (qui fournit la date et l'heure actuelles), nous pouvons déterminer l'âge en différentes unités :

<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, DOB, GETDATE()) AS AgeInHours,
       CONVERT(int, ROUND(DATEDIFF(day, DOB, GETDATE()) / 365.25, 0)) AS AgeYearsApprox
FROM table_name;</code>
Copier après la connexion

Cela donne un âge approximatif en années, représentant le nombre moyen de jours dans une année (365,25). Une méthode plus précise est nécessaire pour des résultats précis.

Méthodes améliorées de calcul de l'âge

Pour une plus grande précision, notamment lorsque l'on considère les années bissextiles, des approches plus sophistiquées sont recommandées.

Âge entier :

Cette méthode fournit l'âge en années entières :

<code class="language-sql">SELECT ID, Name,
       (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) < MONTH(DOB) OR (MONTH(GETDATE()) = MONTH(DOB) AND DAY(GETDATE()) < DAY(DOB)) THEN 1 ELSE 0 END AS AgeYearsInt
FROM table_name;</code>
Copier après la connexion

Âge décimal (plus précis) :

Ce calcul propose un âge plus précis, incluant les années fractionnaires :

<code class="language-sql">SELECT ID, Name,
       DATEDIFF(year, DOB, GETDATE()) +
       CASE
           WHEN DATEADD(year, DATEDIFF(year, DOB, GETDATE()), DOB) > GETDATE() THEN -1
           ELSE 0
       END AS AgeYearsDecimal
FROM table_name;</code>
Copier après la connexion

Ces méthodes améliorées fournissent des calculs d'âge plus précis, gérant les complexités des années bissextiles et des différences entre les jours de l'année pour des résultats plus fiables. Choisissez la méthode qui correspond le mieux à vos exigences de précision.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal