Catatan:Saya telah mengedit ini untuk memperbaiki apa yang saya yakini sebagai bug yang signifikan. Versi yang saat ini diposting berfungsi untuk saya.
Ini akan berfungsi setelah Anda mengubah nama bidang dan tabel agar sesuai dengan database Anda.
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))
Pada dasarnya, ini mendapatkan # hari dari ulang tahun mereka hingga sekarang, dan membaginya dengan 365 (untuk menghindari masalah pembulatan yang muncul saat Anda mengonversi langsung ke tahun).
Kemudian didapat # hari dari ulang tahun mereka menjadi satu minggu dari sekarang, dan membaginya dengan 365 untuk mendapatkan usia mereka seminggu dari sekarang.
Jika ulang tahun mereka dalam waktu seminggu, maka perbedaan antara kedua nilai tersebut adalah 1. Jadi ini mengembalikan semua catatan tersebut.