7

这一定很简单,但我摆弄它,并没有得到我想要的任何东西。我有以下代码:

SELECT id,title,start_date 
  FROM events 
 WHERE start_date > DATE_SUB(NOW(), INTERVAL 1 MONTH) 
  AND city = '$cityName' 
ORDER BY start_date DESC

现在这会选择本月日期的事件,但查询中显示的本月定义与我需要的不同。我需要它在 30 天内向我展示事件,而不仅仅是本月,即 8 月。如果我在 8 月插入一个事件,它会显示结果。如果我确实插入了 9 月,即使距离它不到 30 天,它也不会插入。

4

4 回答 4

52

您应该更改1 MONTH30 DAY

WHERE start_date > NOW() - INTERVAL 30 DAY

要将其限制为任一方向的 30 天:

WHERE start_date > NOW() - INTERVAL 30 DAY
AND start_date < NOW() + INTERVAL 30 DAY
于 2012-08-23T19:45:38.783 回答
2

像这样怎么样:

...WHERE DATE(start_date) BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY) and DATE_SUB(NOW(),INTERVAL 1 DAY) AND city...
于 2012-08-23T19:51:53.027 回答
2

或者

AND TIMESTAMPDIFF(DAY,YOURDATE,now()) < 30

这为您提供了 30 天的跨度

于 2015-02-25T12:02:24.200 回答
1

我希望这也会有所帮助

SELECT id,title,start_date 
  FROM events 
 WHERE  city = "$cityName" AND 
TIMESTAMPDIFF(DAY,start_date,now()) < 30   
ORDER BY start_date DESC
于 2015-06-17T10:21:59.710 回答