ホームページ >データベース >mysql チュートリアル >SQLのgetDate()を使用して生年月日から年齢を計算するにはどうすればよいですか?
SQL の getDate() 関数を使用して、生年月日に基づいて年齢を計算します
質問:
多くのデータベースには、生年月日を含む個人情報が保管されています。記録管理のために年齢を正確に追跡するには、保存されている生年月日を個人の年齢に変換する必要があります。
解決策:
文字列の日付を日付データ型に変換します:
<code class="language-sql">CONVERT(datetime, DOB)</code>
年齢を年単位で計算します:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
出力:
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];</code>
精度に関する考慮事項:
うるう年と正確な日付の計算は精度に影響します。精度を向上させるには、次の点を考慮してください:
年齢を整数で計算する最良の方法:
<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>
年齢を小数として計算する最良の方法:
<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>
以上がSQLのgetDate()を使用して生年月日から年齢を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。