Мне кажется, тут не обойтись без таблицы дней в каком-то виде. Хотя бы как таблицы дней, привязанной к таблице событий — при создании события во вспомогательной таблице создавалось бы нужное число записей для диапазона дат. Но чтобы заполнять такую таблицу все равно потребуется хотя бы массив чисел от 1 до максимального количества дней в событии.
В SQLite можно создавать виртуальные таблицы — там, наверное. можно и генерировать даты по запросу. MySQL не знаю — может быть там есть какие-то процедуры, которые могут возвращать выборку? Или, например, создать view из 31 дня, из 12 месяцев и из нужного числа лет, и, соединяя их в нужных комбинациях, генерировать таблицу дней.