「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQL Serverの生年月日から年に年齢を正確に計算する方法は?

SQL Serverの生年月日から年に年齢を正確に計算する方法は?

2025-03-23に投稿されました
ブラウズ:372

How to Accurately Calculate Age in Years from a Date of Birth in SQL Server?

SQL Serverの生年月日の年齢を正確に計算します

質問:

nvarchar(25)として保存されている生年月日をSQLサーバーの日付に変換し、その後年間に対応する年齢を計算する方法は?

サンプルデータ:

id 名前 dob
1 ジョン 1992-01-09 00:00:00
2 sally 1959-05-20 00:00:00

予想出力:

]
id 名前 dob
1 ジョン 31 1992-01-09 00:00:00
2 sally 64 1959-05-20 00:00:00

回答:年齢を正確に計算]

最初に提案されたアプローチは、跳躍年と月の日の不規則性を考慮する際に課題に直面しています。最新のSQL Serverバージョンは、これらの複雑さに対処するための改善された手法を提供します。

整数の年齢を計算する最良の方法:

この方法は単純で簡単ですが、精度は小数法よりもわずかに低い場合があります。

SELECT
    (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) 

小数の年齢を計算する最良の方法:

この方法では、

datediff functionと case ステートメントを使用して、年齢を正確に計算し、その年に誕生日が経過したかどうかを検討します。

SELECT
    DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE()) 
上記のコードは、

dob 列が日付タイプに変換されていることを前提としていることに注意してください。 dob がまだ nvarchar(25)タイプである場合、クエリにタイプ変換を追加する必要があります。 適切な変換スタイルを選択すると、 dob データの特定の形式に依存します。 たとえば、 convert(date、dob、120)は 'yyyy-mm-dd hh:mi:ss'形式に適しています。 データ形式に合わせてこのセクションを調整する必要がある場合があります。 最終クエリは、に似ている必要があります select datediff(year、convert(date、dob、120)、getdate()) - case when month(getdate())

SELECT
    DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE()) 
をテーブル名に置き換えます。 整数または小数を選択する方法は、精密要件に依存します。 小数の方法はより正確ですが、整数法はより簡潔です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3