看来您正在尝试这样做:
WHERE specific_date < (Now() + 5 days)
首先,请仔细考虑边界情况。这些边界情况可能会在sql中咬伤您的脚踝。你真的想要
WHERE specific_date <= (Now() + 5 days)
您的specific_date
列时间戳仅包含几天(即时间等于午夜的日期)还是包含日期和时间?如果要获得所需的结果,则需要注意这些细节。
无论如何,请尝试以下操作:
WHERE specific_date <= DATE_ADD(Now(), INTERVAL 5 DAY)
这是进行此类查找的好方法。列值单独位于不等式谓词(<=
)的一侧,因此,如果列上有索引,则MysqL可以进行索引范围扫描。
MysqL中的日期算术非常灵活。你可以做
Now() + INTERVAL 10 SECOND
Now() - INTERVAL 2 MINUTE
Now() + INTERVAL 4 HOUR
CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
LAST_DAY(Now()) + INTERVAL 1 DAY - INTERVAL 1 MONTH /*first day of present month*/
Now() - INTERVAL 1 QUARTER
CURDATE() - INTERVAL 5 YEAR
等等。