У меня есть таблица, которая содержит поле id вместе с 5 полями, по одному для каждого дня недели с понедельника по пятницу, где тип данных является битовым.
Таблица выглядит примерно так:
+---+--------+---------+-----------+----------+--------+
|id | Monday | Tuesday | Wednesday | Thursday | Friday |
+---+--------+---------+-----------+----------+--------+
| 1 | 1 | 0 | 0 | 0 | 0 |
+---+--------+---------+-----------+----------+--------+
| 2 | 1 | 0 | 0 | 0 | 0 |
+---+--------+---------+-----------+----------+--------+
| 3 | 0 | 0 | 0 | 1 | 0 |
+---+--------+---------+-----------+----------+--------+
| 4 | 1 | 0 | 0 | 0 | 1 |
+---+--------+---------+-----------+----------+--------+
В зависимости от дня, когда я пытаюсь вернуть строки, для которых установлен бит для этого дня.Я думал сделать это с помощью условия where, но не могу заставить его работать.
Я думаю, что в моей логике что-то не так, любая помощь очень ценится!
DECLARE @tDay as INTEGER
SET @tDay = datepart(weekday, getdate())
SELECT id, monday, tuesday, wednesday, thursday, friday
FROM Days
WHERE CASE WHEN @tDay = 2 then @tDay
Else Days.monday
End = 1
AND
CASE WHEN @tDay = 3 then @tDay
Else Days.tuesday
End = 1