注:重大なバグであると思われるものを修正するためにこれを編集しました。現在投稿されているバージョンは私のために機能します。
これは、データベースに対応するようにフィールド名とテーブル名を変更した後に機能するはずです。
SELECT
BRTHDATE AS BIRTHDAY
,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25) AS AGE_NOW
,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25) AS AGE_ONE_WEEK_FROM_NOW
FROM
"Database name".dbo.EMPLOYEES EMP
WHERE 1 = (FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25))
-
(FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25))
基本的に、誕生日から現在までの日数を取得し、それを365で除算します(直接年に変換するときに発生する丸めの問題を回避するため)。
次に、誕生日から1週間後までの日数を取得し、それを365で割って、1週間後の年齢を取得します。
誕生日が1週間以内の場合、これら2つの値の差は1になります。したがって、これらのすべてのレコードが返されます。