0

我正在尝试为我的网站开发一个“即将上市的列表”拉取程序,但是以下查询似乎没有按应有的方式执行。

SQL:

SELECT * FROM listings WHERE start_date > DATE_SUB( CURDATE(), INTERVAL 3 MONTH )

而不是提前 3 个月拉出列表,而是拉出所有列表?

4

1 回答 1

1

如果您想使用“未来”记录,您应该使用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 个月的所有记录。这可能包括整个数据集。

于 2013-09-16T07:49:35.933 回答