Well, that's gotten me closer than anyone else has so far! 🙂 Thanks! Almost got this now.. but with a little variation on your idea.
As opposed to comparing the dates themselves (DATEDIFF always seems to give a NULL when I try to "drop" the year from the comparison) here's what I've come up with...
SELECT Username,Birthday, DATE_FORMAT(NOW(),'%c%d') - DATE_FORMAT(Birthday,'%c%d') AS BDay FROM `table` WHERE ORDER BY DATE_FORMAT(NOW(),'%c%d') - DATE_FORMAT(Birthday,'%c%d') ASC
(And the BDay is just in there so I can visually see the result of the computation)
Of course I get negative values for all birthdays that haven't yet occured this year (which is great) and positive values for any that have occured. However, the order is something like this:
User1 1980-08-31 -18
User2 1975-08-24 -11
User3 1978-08-13 0
User4 1985-07-23 90
User5 1973-06-12 201
The desired order would be User3,User2,User1,User5,User4.
That said, that query looks (to me anyway) terribly written, and that is the fruit of a good hour's labor! If anyone happens to just know how to do this simply posting a query would be cool.. 😛 (But simple help is certainly approciated, too!)