Допустим, я веду базу данных событий, которая может быть любой, начиная от еженедельного графика рабочего времени компании (понедельник-пятница: 10:00 - 7:00, суббота: 12:00 - 18:00, вс: выходной) до ежемесячных событий (Ярмарка произведений искусства, каждую первую субботу, с 10:00 до 17:00) до ежегодного мероприятия (благотворительный ужин в сочельник, 19:00 - 21:00)
В идеальной ситуации я хотел бы запросить базу данных в любой день, скажем: Четверг, 12 января 2012 г., 12:00
... и найдите все события, происходящие в:
- полдень четверга (например,бизнес открыт) * 1010 *
- каждый второй четверг (художественная ярмарка)
- янв.12, а именно (э-э ... День памяти Туркменистана)
Полагаю, нет смысла говорить о построении запроса, не подумав сначала, как такие даты / время будут храниться в базе данных.
Я не могу придумать, как концепция регулярных еженедельных рабочих часов (даже без учета крайних случаев) могла быть смоделирована в единственном поле с одной записью, которое также моделировало бы событие раз в год.По крайней мере, мне кажется, что мне нужно как минимум пять полей:
- Время начала
- Продолжительность
- День недели (например, пн. Вт.. и т. д.)
- необязательная абсолютная годовая дата (например, 8 мая)
- необязательное ежемесячное вхождение (четвертая среда)
И я предполагаю, что нет никакого способаинкапсулируйте это в один ряд, верно?Например, бизнес, открытый каждый будний день, будет иметь пять записей.
И конечная цель состоит в том, чтобы иметь возможность выполнить относительно элегантный запрос, который мог бы найти все записи о событиях, которые содержат данный момент в своем временном интервале.