0

我正在制作日历,基本上是月份的列表。当您单击某个月时,您会获得该月发生的事件列表。大多数事件都有开始日期和结束日期,但有些事件的结束日期为空,它们只发生在一天。

只要事件发生在开始日期和结束日期之间或之时,它就应该出现在它发生的每个月中,而且确实如此。

问题是,结束日期为空的事件也会出现在开始日期之前的所有月份。如何改进此查询,以便它们仅显示在其开始日期月份?

编码:

$sql="
SELECT id, event, date_start, date_end FROM events 
WHERE 
(year(date_start) <= $year AND month(date_start) <= $month) 
AND 
($year <= year(date_end) AND $month <= month(date_end) 
OR 
month(date_end) IS NULL)
";

编辑:(问题已修复......几乎?)

$sql="
SELECT id, event, date_start, date_end FROM events 
WHERE 
(year(date_start) <= $year AND month(date_start) <= $month) 
AND 
($year <= year(date_end) AND $month <= month(date_end))
OR
(year(date_start) = $year AND month(date_start) = $month)";
";
4

0 回答 0