0

SQL 言語を使用した MS ACCESS 2016 のクエリについて助けが必要です。20 の雇用主のテーブルがあり、テーブルには名前、姓、性別、生年月日、雇用日、支払いが含まれています。特定の年齢を計算する必要があります。つまり、雇用主のたとえば 25 歳が誰であるかを知りたいのですが、それを計算するために SQL 言語でコマンドを記述する方法がわかりません。誰かが私を助けてくれれば非常に感謝しています。

4

1 に答える 1

0

簡単な方法で、SQL で直接 100% 正しい年齢を計算することはできません。

したがって、次のような UDF (ユーザー定義関数) を使用します。

Public Function AgeSimple( _
  ByVal datDateOfBirth As Date) _
  As Integer

' Returns the difference in full years from datDateOfBirth to current date.
'
' Calculates correctly for:
'   leap years
'   dates of 29. February
'   date/time values with embedded time values
'
' DateAdd() is used for check for month end of February as it correctly
' returns Feb. 28. when adding a count of years to dates of Feb. 29.
' when the resulting year is a common year.
' After an idea of Markus G. Fischer.
'
' 2007-06-26. Cactus Data ApS, CPH.

  Dim datToday  As Date
  Dim intAge    As Integer
  Dim intYears  As Integer

  datToday = Date
  ' Find difference in calendar years.
  intYears = DateDiff("yyyy", datDateOfBirth, datToday)
  If intYears > 0 Then
    ' Decrease by 1 if current date is earlier than birthday of current year
    ' using DateDiff to ignore a time portion of datDateOfBirth.
    intAge = intYears - Abs(DateDiff("d", datToday, DateAdd("yyyy", intYears, datDateOfBirth)) > 0)
  End If

  AgeSimple = intAge

End Function

コードをコピーして空のモジュールに貼り付けます。

次に、クエリを実行します。

Select *, AgeSimple([DateOfBirth]) As Age
From YourTable
Where AgeSimple([DateOfBirth]) >= 25

もちろん、テーブルとフィールドの名前を自分のものに置き換えてください。

于 2016-11-07T15:48:48.730 に答える