我正在尝试为我的网站开发一个“即将上市的列表”拉取程序,但是以下查询似乎没有按应有的方式执行。
SQL:
SELECT * FROM listings WHERE start_date > DATE_SUB( CURDATE(), INTERVAL 3 MONTH )
而不是提前 3 个月拉出列表,而是拉出所有列表?
如果您想使用“未来”记录,您应该使用DATE_ADD
:
SELECT *
FROM listings
WHERE start_date
BETWEEN CURDATE()
AND DATE_ADD(CURDATE(), INTERVAL 3 MONTH);
请注意,该BETWEEN ... AND
子句是包容性的:换句话说,您将拥有start_date
等于当前的记录和恰好 3 个月后的记录。如果这不是预期的结果,只需使用单独的两个条件:
WHERE start_date > CURDATE()
AND start_date < DATE_ADD(CURDATE(), INTERVAL 3 MONTH);
就目前而言,您收集了start_date
设置为晚于当前日期3 个月的所有记录。这可能包括整个数据集。