select top 3
[några fält]
from tblUser
where ( month(userBirthday) = month(Date())
and
day(userBirthday) >= day(Date()))
or month(userBirthday) > month(Date())
order
by userBirthday
I en databas har jag i min användartabell ett datumfält för användarens födelsedag. Datumfältet innehåller olika årtal (för att räkna ut hur gamla de blir).
Hur skall jag skriva SQL-frågan så att servern hämtar de tre personer som fyller år snart?
Jag har förstått att man kan använda VBScript-funktionen Month() i SQL-frågan, men då tar man inte någon som helst hänsyn till dagen (om det råkar vara flera som fyller år under samma månad).
Jag har i alla fall kommit fram till detta än så länge:
SELECT TOP 3 [några fält] FROM tblUser WHERE Month(userBirthday) >= Month(Date()) ORDER BY Month(userBirthday)