我試圖理清一個結果集,它給出了按照即將到來的生日排序的5個最接近的用戶。在閏年發揮作用之前,這完美運作。例如:mysql生日提醒,閏年
- 5月15日 - 97天了
- 5月15日 - 98天了
頂部結果是在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
謝謝!我會看看,給我幾分鐘試一下=) – moodh 2010-02-08 20:14:45
@tired:請注意,我做了一個小的改變,以便所有今天生日的人都有距離0,而不是距離365。 'NOW()'到'DATE(NOW())'。 – 2010-02-08 20:18:51
它的工作原理是,但我有一個後續問題: 如何從表中檢索額外的行?我已經嘗試過所有三次選擇,但沒有運氣,可以說我也想檢索s_agehide。 感謝您的幫助! – moodh 2010-02-08 20:20:35