私は、5人の最も近いユーザーを次の誕生日でソートした結果セットをソートしようとしています。これは、うるう年が始まるまで完全に機能します。例えば:
- 5月15日-残り96日
- 5月15日-残り97日
上の結果は1987年の出生で、下の結果は1988年の出生です。u_birthはyyyy-mm-ddとして保存されます。クエリ全体を書き直すことなく、この問題を分類する簡単な方法はありますか?
SELECT u_birth, IF( DAYOFYEAR( u_birth ) >= DAYOFYEAR( NOW() ),
DAYOFYEAR( u_birth ) - DAYOFYEAR( NOW() ),
DAYOFYEAR( u_birth ) - DAYOFYEAR( NOW() ) +
DAYOFYEAR( CONCAT( YEAR( NOW() ), '-12-31' ) )
)
AS distance
FROM (blog_users)
WHERE `s_agehide` = 0
ORDER BY distance ASC
LIMIT 5
このクエリは、mysqlのマニュアルから取得および変更されています:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#c7489