[ad_1]
SQLで生年月日から年齢を計算する方法.
私のテーブルにはDOBの列がありますが、SQLクエリでそれを計算する方法が必要です
解決策 2
SQL
SELECT FLOOR(DATEDIFF(DAY, @BirthDate, @TargetDate) / 365.25)
参照: SQLで生年月日に基づいて年齢を計算する[^]
また
SQL
SELECT DATEDIFF(hour,@dob,GETDATE())/8766 AS AgeYearsIntTrunc
解決策 3
やあ 、
このコードブロックを試してください
SQL
DECLARE @date datetime, @tmpdate datetime, @years int, @months int, @days int SELECT @date = '2/29/04' SELECT @tmpdate = @date SELECT @years = DATEDIFF(yy, @tmpdate, GETDATE()) - CASE WHEN (MONTH(@date) > MONTH(GETDATE())) OR (MONTH(@date) = MONTH(GETDATE()) AND DAY(@date) > DAY(GETDATE())) THEN 1 ELSE 0 END SELECT @tmpdate = DATEADD(yy, @years, @tmpdate) SELECT @months = DATEDIFF(m, @tmpdate, GETDATE()) - CASE WHEN DAY(@date) > DAY(GETDATE()) THEN 1 ELSE 0 END SELECT @tmpdate = DATEADD(m, @months, @tmpdate) SELECT @days = DATEDIFF(d, @tmpdate, GETDATE()) SELECT @years, @months, @days
解決策 24
ケリーの答えはほぼ正しいです。 非常に古いスレッドですが、これは誰かを助けることができます。
あなたはこれを行うことができます:
select datediff(year,[bd], getdate()) - case when month([bd]) > month(getdate()) or (month([bd]) = month(getdate()) and day([bd]) > day(getdate())) then 1 else 0 end age from [table]
table はテーブル名、bd はそのテーブルの生年月日フィールド名です。
まず、生年月日から現在までの年数を取得します。
datediff(year,[bd], getdate())
次に、その人がすでに今年の誕生日を迎えているかどうかを確認する必要があります。そうでない場合は、合計から 1 を引く必要があります。
月が未来の場合
month([bd]) > month(getdate())
または誕生日月であるが、その日が未来の場合
(month([bd]) = month(getdate()) and day([bd]) > day(getdate()))
解決策 4
これは、Medisoft Report Professional の ReportBuilder のように、RAP、Report Object Pascal の私の解決策です。
デルファイ
procedure AgeOnCalc(var Value: Variant); var currentyear, currentmonth, currentday : integer; patientyear, patientmonth, patientday : integer; begin decodedate(CurrentDate, currentyear, currentmonth, currentday); decodedate(Patient['Date of Birth'], patientyear, patientmonth, patientday); if (patientmonth > currentmonth) or ((patientmonth = currentmonth) and (patientday > currentday)) then value := currentyear - patientyear - 1 else value := currentyear - patientyear; end;
解決策 1
今日の平均年齢を計算するには、次を使用できます。 SELECT DATEDIFF(DAY, @Birth, GetDate()) / 365.25
.
ただし、正確な年齢を日または年で求める場合、計算はより複雑になる可能性があります。
[ad_2]
コメント