生年月日を使用した 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 サイトの他の関連記事を参照してください。