Php 根据开始日期和结束日期查询从今天到一周后发生的多日事件列表
我有一个表,其中包含一个事件列表,有开始日期和结束日期。我可以通过以下方式成功获取今天发生的事件列表:Php 根据开始日期和结束日期查询从今天到一周后发生的多日事件列表,php,mysql,Php,Mysql,我有一个表,其中包含一个事件列表,有开始日期和结束日期。我可以通过以下方式成功获取今天发生的事件列表: SELECT * FROM event WHERE CURDATE() BETWEEN start_date and end_date SELECT * FROM event WHERE DATE_ADD(CURDATE() INTERVAL 1 WEEK) BETWEEN start_date and end_date SELECT * FROM events WHERE (start_
SELECT * FROM event WHERE CURDATE() BETWEEN start_date and end_date
SELECT * FROM event WHERE DATE_ADD(CURDATE() INTERVAL 1 WEEK) BETWEEN start_date and end_date
SELECT *
FROM events
WHERE (start_date >= CURDATE() AND end_date <= CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date >= CURDATE() )
OR (start_date <= CURDATE() + INTERVAL 1 WEEK
AND end_date > CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date > CURDATE() + INTERVAL 1 WEEK);
或从今天起一周内发生的事件列表,包括:
SELECT * FROM event WHERE CURDATE() BETWEEN start_date and end_date
SELECT * FROM event WHERE DATE_ADD(CURDATE() INTERVAL 1 WEEK) BETWEEN start_date and end_date
SELECT *
FROM events
WHERE (start_date >= CURDATE() AND end_date <= CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date >= CURDATE() )
OR (start_date <= CURDATE() + INTERVAL 1 WEEK
AND end_date > CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date > CURDATE() + INTERVAL 1 WEEK);
但是,我想要一份从今天到一周后(包括今天)任何时间发生的事件列表。请记住,每个事件跨越多天,并由开始日期和结束日期定义,而不是一天的事件
有没有一种简单的查询方法,或者用上面的第一个查询循环PHP中的每一天(用从今天到现在的一周内的每一天替换CURDATE)会更容易些。据我所知,您的问题有四种类型的事件需要返回:
|-------------------- WEEK ---------------------|
| |
| |========== EVENT ==========| |
|========== EVENT ==========| |
| |========== EVENT ==========|
|========================= EVENT =========================|
| |
|-----------------------------------------------|
这意味着我们有:
- 在一周内开始和结束的事件李>
- 在本周之前开始并在本周结束的事件李>
- 在一周内开始并在一周后结束的事件李>
- 周前开始、周后结束的事件
SELECT * FROM event WHERE CURDATE() BETWEEN start_date and end_date
SELECT * FROM event WHERE DATE_ADD(CURDATE() INTERVAL 1 WEEK) BETWEEN start_date and end_date
SELECT *
FROM events
WHERE (start_date >= CURDATE() AND end_date <= CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date >= CURDATE() )
OR (start_date <= CURDATE() + INTERVAL 1 WEEK
AND end_date > CURDATE() + INTERVAL 1 WEEK)
OR (start_date < CURDATE() AND end_date > CURDATE() + INTERVAL 1 WEEK);
只是想澄清一下,您是否只希望开始日期介于今天和从今天起1周之间?还是必须是开始日期和结束日期?嗨,乔纳森,谢谢你的帮助,很抱歉我在办公室耽搁了几天。今天我将通读并尝试你的解决方案,如果它有效,我将把它标记为答案@hkf数据库中的每个事件都有一个开始日期值和一个结束日期值。。我正在寻找一个查询,它将为我提供满足以下条件的每个事件:从NOW()到NOW()+1周之间的任何时间都在事件的开始日期和结束日期之内,可以简化为
WHERE(开始日期)…假设这始终为真:start\u日期