Poznámka:Upravil jsem to, abych opravil to, co považuji za významnou chybu. Aktuálně zveřejněná verze mi funguje.
To by mělo fungovat poté, co upravíte názvy polí a tabulek tak, aby odpovídaly vaší databázi.
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))
V podstatě získá počet dní od jejich narozenin do současnosti a vydělí to 365 (aby se předešlo problémům se zaokrouhlováním, které nastanou při přímém převodu na roky).
Potom získá počet dní od jejich narozenin do týdne od nynějška a vydělí to 365, čímž získá jejich věk za týden.
Pokud jsou jejich narozeniny do týdne, pak rozdíl mezi těmito dvěma hodnotami bude 1. Takže vrátí všechny tyto záznamy.