这一定很简单但我摆弄它,并没有得到我想要的任何东西。我有以下代码:
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天也不会。
答案 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