Bemærk:Jeg har redigeret dette for at rette, hvad jeg mener var en væsentlig fejl. Den aktuelt udsendte version virker for mig.
Dette burde virke, når du har ændret felt- og tabelnavnene, så de svarer til din database.
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))
Grundlæggende får den antallet af dage fra deres fødselsdag til nu, og dividerer det med 365 (for at undgå at afrunde problemer, der dukker op, når du konverterer direkte til år).
Så får den antallet af dage fra deres fødselsdag til en uge fra nu, og dividerer det med 365 for at få deres alder om ugen fra nu.
Hvis deres fødselsdag er inden for en uge, vil forskellen mellem disse to værdier være 1. Så det returnerer alle disse poster.