我需要从表中获取结果,该表的日期应与当前日期相差5。
即,specific_date列存在于我的表格中。日期的格式为YYYY-MM-DD。
specific_date
YYYY-MM-DD
我需要类似的查询,
SELECT * FROM `table_name` WHERE DATEDIFF(NOW(), specific_date) < 5
看来您正在尝试这样做:
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
等等。