ホームページ > データベース > mysql チュートリアル > 生年月日を使用して SQL Server で年齢を正確に計算するにはどうすればよいですか?

生年月日を使用して SQL Server で年齢を正確に計算するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-22 13:26:09
オリジナル
536 人が閲覧しました

How to Accurately Calculate Age in SQL Server Using Date of Birth?

生年月日を使用した SQL Server での正確な年齢計算

SQL Server は、生年月日から年齢を計算する効率的な方法を提供します。 CAST() 関数は、生年月日文字列を DATE/DATETIME データ型に簡単に変換し、年齢の決定を含むさまざまな日付の計算を可能にします。

次のサンプル データについて考えてみましょう:

ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00

DATEDIFF()

による年齢計算

DATEDIFF() 関数は 2 つの日付の差を計算します。 これを GETDATE() (現在の日付と時刻を提供する) と組み合わせると、さまざまな単位で年齢を決定できます。

SELECT ID, Name, DATEDIFF(hour, DOB, GETDATE()) AS AgeInHours,
       CONVERT(int, ROUND(DATEDIFF(day, DOB, GETDATE()) / 365.25, 0)) AS AgeYearsApprox
FROM table_name;
ログイン後にコピー

これにより、1 年の平均日数 (365.25) を考慮したおおよその年齢が計算されます。 正確な結果を得るには、より正確な方法が必要です。

強化された年齢計算方法

精度を高めるために、特にうるう年を考慮する場合は、より洗練されたアプローチをお勧めします。

整数年齢:

このメソッドは年齢を整数で求めます:

SELECT ID, Name,
       (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) < MONTH(DOB) OR (MONTH(GETDATE()) = MONTH(DOB) AND DAY(GETDATE()) < DAY(DOB)) THEN 1 ELSE 0 END AS AgeYearsInt
FROM table_name;
ログイン後にコピー

10 進法年齢 (より正確):

この計算では、小数点以下の年も含め、より正確な年齢が得られます。

SELECT ID, Name,
       DATEDIFF(year, DOB, GETDATE()) +
       CASE
           WHEN DATEADD(year, DATEDIFF(year, DOB, GETDATE()), DOB) > GETDATE() THEN -1
           ELSE 0
       END AS AgeYearsDecimal
FROM table_name;
ログイン後にコピー

これらの改良された方法では、より正確な年齢の計算が可能になり、閏年や暦日の違いの複雑さを処理して、より信頼性の高い結果が得られます。 精度要件に最も適した方法を選択してください。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート