Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据开始日期和结束日期查询从今天到一周后发生的多日事件列表_Php_Mysql - Fatal编程技术网

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 =========================|
          |                                               |
          |-----------------------------------------------|
这意味着我们有:

  • 在一周内开始和结束的事件
  • 在本周之前开始并在本周结束的事件
  • 在一周内开始并在一周后结束的事件
  • 周前开始、周后结束的事件
将其转换为SQL将提供以下内容:

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日期