Maison >base de données >tutoriel mysql >Comment calculer avec précision l'âge dans SQL Server en utilisant la date de naissance ?
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>
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>
Â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>
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!