我试图理清一个结果集,它给出了按照即将到来的生日排序的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