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.
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