У меня была эта проблема несколько лет назад, и тогда я реализовал «другую логику» для реализации проекта, но сомнения остаются в моей голове, и, надеюсь, с вашей помощью я смогу понять это сейчас.
Предположим, у меня есть некоторые запланированные события в моей базе данных, которые могут появляться или не появляться в течение нескольких дней:
id event start end
-----------------------------------------------
1 fishing trip 2009-12-15 2009-12-15
2 fishCON 2009-12-18 2009-12-20
3 fishXMAS 2009-12-24 2009-12-25
Теперь я хочу отобразить события в календаре, давайте возьмем декабрьский месяц:
for ($day = 1; $day <= 31; $day++)
{
if (dayHasEvents('2009-12-' . $day) === true)
{
// display the day number w/ a link
}
else
{
// display the day number
}
}
Какой запрос должна выполнить функция dayHasEvents()
, чтобы проверить, есть ли (или нет) события на этот день? Я предполагаю, что SELECT .. WHERE .. BETWEEN
имеет больше смысла здесь, но я не знаю, как это реализовать. Я в правильном направлении?
Заранее спасибо!
@ Джеймс:
Допустим, мы находимся 19 декабря :
SELECT *
FROM events
WHERE start >= '2009-12-19 00:00:00'
AND end <= '2009-12-19 23:59:59'
Должен вернуть событие # 2 , но ничего не возвращает. = \