我正在尝试为我的网站开发一个“即将推出的列表”,但是以下查询似乎没有按预期执行。
SQL:
SELECT * FROM listings WHERE start_date > DATE_SUB( CURDATE(), INTERVAL 3 MONTH )
而不是提前3个月提取列表,而是拉出所有列表?
答案 0 :(得分:1)
如果您想使用“未来”记录,则应使用DATE_ADD
代替:
SELECT *
FROM listings
WHERE start_date
BETWEEN CURDATE()
AND DATE_ADD(CURDATE(), INTERVAL 3 MONTH);
请注意,BETWEEN ... AND
子句是包含在内的:换句话说,您将start_date
的记录与当前的1和3个月后的记录相等。如果这不是预期的结果,只需使用单独的两个条件:
WHERE start_date > CURDATE()
AND start_date < DATE_ADD(CURDATE(), INTERVAL 3 MONTH);
按照现在的情况,您将收集start_date
设置为以后的所有记录,而不是当前日期之前 3个月。这可能包括整个数据集。