ホームページ  >  記事  >  データベース  >  MySQL で年齢を整数として正確に計算するにはどうすればよいですか?

MySQL で年齢を整数として正確に計算するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 19:49:02859ブラウズ

 How to Accurately Calculate Age as an Integer in MySQL?

MySQL で年齢を整数として計算する

MySQL データベースに保存されている生年月日に基づいて個人の年齢を決定する場合、 DATEDIFF() 関数によって提供される日数の差は、正確な整数表現を提供するには至っていません。この課題を克服するには、複数のステップからなるアプローチが必要です。

ステップ 1: 年を計算する式 YEAR(CURDATE()) - YEAR(birth_date)現在の日付と生年月日の間の年の差が得られます。ただし、このアプローチでは不完全な年数は考慮されません。たとえば、現在の日付が 5 月で、誕生日が 6 月の場合、その人の年齢はまだ 31 歳です。

ステップ 2: 不完全な年を修正する

宛先不完全な年の問題については、次のサブクエリを使用できます:

このサブクエリは、閏年を考慮して、個人の誕生日から経過した年数と日数を計算します。
(SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))

ステップ 3: 結果を結合する

年齢を整数として計算する最後の式は次のとおりです:

この式では、完全な年数から不完全な年が減算され、結果は次のようになります。個人の年齢を表す整数で表します。
(YEAR(CURDATE()) - YEAR(birth_date)) - (SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))

代替解決策

MySQL で年齢を整数として計算する別のオプションは、TIMESTAMPDIFF() 関数を使用することです。

この関数は、2 つのタイムスタンプ間の年の差を直接計算し、複雑な計算の必要性を回避します。また、YEAR を MONTH または DAY に置き換えて、月または日の差を計算するために使用することもできます。
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student

以上がMySQL で年齢を整数として正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。