提前拉记录

时间:2013-09-16 07:48:12

标签: sql date

我正在尝试为我的网站开发一个“即将推出的列表”,但是以下查询似乎没有按预期执行。

SQL:

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

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

1 个答案:

答案 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个月。这可能包括整个数据集。