Опция 1
Допустим, у вас есть эта структура
Hours | WeekDay | Weekend
-------------------------------
6AM - 10AM | 1 | 0
10AM - 1PM | 1 | 0
1PM - 4PM | 1 | 0
6AM - 8AM | 0 | 1
8AM - 12PM | 0 | 1
1PM - 2PM | 0 | 1
Даже с двумя типами SQL выглядит довольно грязно
Select Hours
From
hoursTable
Where
(weekDay = 1 and {WeekDayParam} = 1)
or
weekEnd = 1 and {WeekEndParam} = 1
Вариант 2
Если это выглядит так
Hours | Type
---------------------
6AM - 10AM | 1
10AM - 1PM | 1
1PM - 4PM | 1
6AM - 8AM | 2
8AM - 12PM | 2
1PM - 2PM | 2
Тогда sql будет намного более простым
Select Hours
From
hoursTable
Where
type = {typeParam}
Как мы справляемся с новыми требованиями
Как насчет того, чтобы добавить другой вариант: праздничные дни
Хотите
Hours | WeekDay | Weekend | Holiday
-----------------------------------------
6AM - 10AM | 1 | 0 | 0
10AM - 1PM | 1 | 0 | 0
1PM - 4PM | 1 | 0 | 0
6AM - 8AM | 0 | 1 | 0
8AM - 12PM | 0 | 1 | 0
1PM - 2PM | 0 | 1 | 0
10:30PM 2PM | 0 | 1 | 0
Или
Hours | Type
---------------------
6AM - 10AM | 1
10AM - 1PM | 1
1PM - 4PM | 1
6AM - 8AM | 2
8AM - 12PM | 2
1PM - 2PM | 2
10:30PM 2PM | 3
Обратите внимание, что в первом решении каждый раз, когда вы получаете новую часовую политику, вам нужно обновить структуру данных sql и вызывающего кода, а во втором - нет?
Переходите ко второму решению.