Php 使用mysql显示未来七天内事件的开始和结束日期 表结构

Php 使用mysql显示未来七天内事件的开始和结束日期 表结构,php,mysql,Php,Mysql,我有一个带有标题、开始日期和结束日期的事件表。问题是我想显示未来七天内的所有记录,可以是开始日期,也可以是结束日期。有时不会指定结束日期,因为它将被宣布,所以结束日期将是0000-00-00,这也需要注意。试试这个 SELECT * FROM `events` WHERE /*Select with no end date */ (`end_date` = '0000-00-00' AND `start_date` BETWEEN NOW() AND ADDDATE(NOW(), 7)) /

我有一个带有标题、开始日期和结束日期的事件表。问题是我想显示未来七天内的所有记录,可以是开始日期,也可以是结束日期。有时不会指定结束日期,因为它将被宣布,所以结束日期将是0000-00-00,这也需要注意。

试试这个

SELECT * FROM `events`
WHERE 
/*Select with no end date */
(`end_date` = '0000-00-00' AND `start_date` BETWEEN NOW() AND ADDDATE(NOW(), 7)) 
/* SELECT ON THIS DAY */
OR NOW() BETWEEN `start_date` AND `end_date` 
/* SELECT ON NEXT 7 DAY */
OR ADDDATE(NOW(), 7) BETWEEN `start_date` AND `end_date`

那么,当你将0000-00-00作为结束日期时,你会期待什么呢?活动的结束将被宣布,并将在接下来的七天中显示。感谢你的回复,当我有开始日期和结束日期时,它会工作,但它不会获取所有结束日期为0000-00-00的记录。好的,明白了,添加了另一个条件,以获取结束日期为0000-00-00的所有日期
SELECT * FROM `events`
WHERE 
/*Select with no end date */
(`end_date` = '0000-00-00' AND `start_date` BETWEEN NOW() AND ADDDATE(NOW(), 7)) 
/* SELECT ON THIS DAY */
OR NOW() BETWEEN `start_date` AND `end_date` 
/* SELECT ON NEXT 7 DAY */
OR ADDDATE(NOW(), 7) BETWEEN `start_date` AND `end_date`