mysql在30天范围内选择日期

时间:2012-08-23 19:44:32

标签: mysql date

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

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天内向我展示事件,而不仅仅是这个月,即八月。如果我在八月插入一个事件,它会显示结果。如果我确实插入9月,即使它不到30天也不会。

4 个答案:

答案 0 :(得分:44)

您应该将1 MONTH更改为30 DAY

WHERE start_date > NOW() - INTERVAL 30 DAY

将其限制在30天的任何一个方向:

WHERE start_date > NOW() - INTERVAL 30 DAY
AND start_date < NOW() + INTERVAL 30 DAY

答案 1 :(得分:2)

这样怎么样:

...WHERE DATE(start_date) BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY) and DATE_SUB(NOW(),INTERVAL 1 DAY) AND city...

答案 2 :(得分:1)

OR

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

这为您提供30天的跨度

答案 3 :(得分:1)

我希望这也有帮助

SELECT id,title,start_date 
  FROM events 
 WHERE  city = "$cityName" AND 
TIMESTAMPDIFF(DAY,start_date,now()) < 30   
ORDER BY start_date DESC