Maison >base de données >tutoriel mysql >Comment calculer l'âge à partir de la date de naissance à l'aide de getDate() de SQL ?
Utilisez la fonction getDate() de SQL pour calculer l'âge en fonction de la date de naissance
Question :
De nombreuses bases de données conservent des informations personnelles, notamment la date de naissance. Afin de suivre avec précision l'âge pour la gestion des dossiers, la date de naissance enregistrée doit être convertie en âge de l'individu en années.
Solution :
Convertir la date de chaîne en type de données date :
<code class="language-sql">CONVERT(datetime, DOB)</code>
Calculer l'âge en années :
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
Sortie :
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];</code>
Considérations relatives à la précision :
Les années bissextiles et les calculs de dates précis affecteront la précision. Pour améliorer la précision, considérez les éléments suivants :
La meilleure façon de calculer l'âge en nombres entiers :
<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>
La meilleure façon de calculer l'âge sous forme décimale :
<code class="language-sql">1.0 * DATEADD(yy, @Dob, @Now) + CASE WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN -- 当年生日已过 (1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) ELSE -- 当年生日未过 -1 * ( -1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) END</code>
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!