我正在做一个事件管理项目,我需要从数据库中获取即将发生的事件,有人能帮我吗?
我正在使用
SELECT *FROM EVENTS WHERE DATE_ADD(event_date, INTERVAL YEAR(CURDATE())-YEAR(event_date) YEAR)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) LIMIT 1;
但它给了我7天内即将到来的活动。我不想提供天数。
我想参加第一个即将到来的活动,不管是在几天后还是几天内。
谢谢!
与当前日期相比,这不是一个简单的where子句吗
SELECT *
FROM EVENTS
WHERE event_date > CURDATE()
ORDER BY event_date
LIMIT 1;
这样不行吗?
SELECT * FROM EVENTS WHERE event_date > CURDATE() ORDER BY event_date ASC LIMIT 1;
尝试
如果列类型为datetime
,则可以使用CURDATE()
(mysql函数)或date()
(php函数)
"SELECT *FROM EVENTS WHERE event_date > '".date('Y-m-d H:i:s')."' ORDER BY event_date limit 1"
或
"SELECT *FROM EVENTS WHERE event_date > CURDATE() ORDER BY event_date limit 1"
如果列类型为date
"SELECT *FROM EVENTS WHERE event_date > '".date('Y-m-d')."' ORDER BY event_date limit 1"
在下面尝试它可以完美地工作
select * from table where start_time between NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY)
你可以这样使用来获取接下来的7天数据,或者如果你想要最后7天,那么代替DATE_ADD使用DATE_SUB它会起作用,或者你可以像一样使用
start_time between NOW() AND DATE_ADD(NOW(), INTERVAL 1 WEEK)
这也是有效的。要了解更多信息,请查看此参考资料https://dev.mysql.com/doc/en/date-and-time-functions.html
谢谢大家,
我得到了答案:
SELECT * FROM EVENTS
WHERE event_date > CURDATE()
ORDER BY event_date ASC LIMIT 1;