我正在制作日历,基本上是月份的列表。当您单击某个月时,您会获得该月发生的事件列表。大多数事件都有开始日期和结束日期,但有些事件的结束日期为空,它们只发生在一天。
只要事件发生在开始日期和结束日期之间或之时,它就应该出现在它发生的每个月中,而且确实如此。
问题是,结束日期为空的事件也会出现在开始日期之前的所有月份。如何改进此查询,以便它们仅显示在其开始日期月份?
编码:
$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)";
";