"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment calculer avec précision l'âge en années à partir d'une date de naissance dans SQL Server?

Comment calculer avec précision l'âge en années à partir d'une date de naissance dans SQL Server?

Publié le 2025-03-23
Parcourir:125

How to Accurately Calculate Age in Years from a Date of Birth in SQL Server?

Calculez avec précision l'âge de la date de naissance dans SQL Server

question:

Comment convertir la date de naissance stockée en tant que Nvarchar (25) en date dans SQL Server, puis calculer son âge correspondant en années?

Exemples de données:

IDENTIFIANT Nom dob
1 John 1992-01-09 00:00:00
2 Sortie 1959-05-20 00:00:00

sortie attendue:

]
IDENTIFIANT Nom ÂGE dob
1 John 31 1992-01-09 00:00:00
2 Sortie 64 1959-05-20 00:00:00

Réponse: Calculer avec précision l'âge

]

L'approche initialement proposée est confrontée à des défis dans la prise en compte des irrégularités des années et des jours de saut. Les versions modernes SQL Server nous fournissent des techniques améliorées pour répondre à ces complexités.

La meilleure façon de calculer l'âge des entiers:

Cette méthode est simple et simple, mais la précision peut être légèrement inférieure à la méthode décimale.

SELECT
    (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) 

La meilleure façon de calculer l'âge des décimales:

Cette méthode utilise la fonction DADIFF et l'instruction case pour calculer avec précision l'âge, et déterminer si l'anniversaire est passé cette année-là.

SELECT
    DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE()) 

Notez que le code ci-dessus suppose que la colonne dob a été convertie en type date . Si dob est toujours du type nvarchar (25) , vous devez ajouter une conversion de type dans la requête, par exemple: convert (date, dob, 120) . Le choix du style de conversion approprié dépend du format spécifique de vos données dob . Par exemple, converti (date, dob, 120) convient au format 'yyyy-mm-dd hh: mi: ss'. Vous devrez peut-être ajuster cette section en fonction de votre format de données. La requête finale doit être similaire à:

SELECT
    DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE()) 

Remplacez yourTable par le nom de votre table. La méthode de choix d'un entier ou décimal dépend de vos exigences de précision. La méthode décimale est plus précise, mais la méthode entière est plus concise.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3