Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Пересечение интервалов времени


Автор: JokerJo 24.2.2011, 23:43
Доброго времени суток. Товарищи выручите. Не могу сообразить такую вещь. Есть добавление событий в течении дня. Например событие А, которое уже присутствует в базе, будет проходить 25-02-2011 с 10:00 до 12:00. Других событий в этом интервале быть не может. Так вот, кто то упустил этот момент и решил добавить событие Б 25-02-2011 с 9:00 до 11:00 или с 9:00 до 13:00 или с 11:00 до 13:00. Тоесть все три варианта неизбежно пересекаются с временем указанным в событии А. Так вот вопрос, может кто с таким сталкивался. Как лучше для этого составить SQL вопрос? И вообще как лучше решить данную задачу по Вашему мнению. Все даты в базе хранятся в UNIX timestamp. Заранее благодарен за внимание к этому вопросу.

Вот допусти у нас есть запись в БД(UNIX_TIMESTAMP):

start_date: 1298628000
end_date: 1298631600

что в свою очередь означает:

start_date: 2011-02-25 12:00:00
end_date: 2011-02-25 13:00:00

Я хочу добавить запись:

start_date: 2011-02-25 11:00:00
end_date: 2011-02-25 13:00:00

Эта запись некорректна ибо пересекается с существующей записью. Ни у кого нет вариантов? Сам пока не додумался.

Как всегда все оказалось просто  smile 
Вот решение:
Код

"SELECT * FROM events e WHERE UNIX_TIMESTAMP('{$start_date}') <= e.end_date AND UNIX_TIMESTAMP('{$end_date}') >= e.start_date"


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)