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