Итак, у меня есть набор часов для определенного набора дней (позволяет назвать его расписанием), это расписание описывает общий шаблон. Однако иногда есть то, что я буду называть исключениями, когда расписание растет или ограничивается.SQL Date/Time Manipulation
Например:
Расписание Понедельник 7:00 AM - 4:00 PM, 5:00 PM - 9:00 PM
Исключения для этого следующий понедельник, в частности: 6:00 PM - 7:00 PM
Можно ли манипулировать часами в SQL Query, чтобы вернуться 7:00 - 16:00, с 5:00 до 18:00 и с 19:00 до 21:00 , Я понимаю, что это возможно с помощью таблицы temp и трех разных запросов, но я надеялся сделать это более элегантно.
Другим вариантом может быть все это в логике C# ... Я буду очень признателен за любую помощь в решении этой задачи планирования.
Источник таблица (пожалуйста, обратите внимание, что я до сих пор Открыт для изменения структуры при необходимости)
Schedule - A user can set up a named schedule
Id
Name
ScheduleDates - Describes the dates range(s) a schedule is active
Id
ScheduleId
StartDate
EndDate
ScheduleEntries - Describe the schedule that describes most
of the dates in the schedule
ScheduleId
StartTime
EndTime
DayId (Describes which day of the week)
Exception
Id
Reason
StartTime
EndTime
Опишите исходную таблицу (ы). –
Являются ли ваши поля только даты или даты? Я спрашиваю, потому что нет необходимости в таблице ScheduleEntries, если ваши поля имеют дату и время. У вас уже есть день на старте –
Является ли исключение предназначено только для определенной функции ScheduleEntry? Если это так, я бы добавил поле Id в таблицу ScheduleEntry и ссылку на внешний ключ для ScheduleId в Exception. Я также добавил бы поле DayId в Exception. Затем вы могли бы присоединиться к ScheduleEntries в Exception и использовать его как переопределение. – Jordan