我有一个字段为birthday
(日期)的用户表。改善查询以选择距离现在(未来和过去)x天内的(出生)日期
目前,我选择的用户是谁的生日是7天内过去或未来的当前日期是这样的:
SELECT * FROM users
WHERE
DATE_FORMAT(birthday, '1980-%m-%d')
BETWEEN
DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 7 day), '1980-%m-%d')
AND
DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 7 day), '1980-%m-%d')
正如你可以看到,这个查询是不是最精简的,考虑通过比较制作1980年日期格式。此外,我相信这将无法在一年中的最后一周和第一周中正确选择生日用户。
当我看到这个问题时,我很难找到如何解决这个问题。我能做些什么来改善这个查询?
我已经更新了我的意见,并提出在PHP合适的解决方案。 – 2012-03-22 09:58:59