Если вы храните даты как произведение простых чисел, оператор modulo (%) может быть более полезным:
SELECT * FROM Events
INNER JOIN Buildings on (Events.BuildingID = Buildings.ID)
WHERE
(Events.Days % 2 = 0 AND Events.Days % 5 = 0)
Выбирает события, происходящие в понедельник или среду.
Я должен отметить, что хранение произведения простых чисел является и вычислительным, и дорогостоящим.Намного проще хранить сумму степеней двух (пн = 1, вт = 2, ср = 4, четверг = 8, пт = 16, сб = 32, солнце = 64).
Наибольшее возможное значениедля вашей текущей реализации 510 510.Наименьший тип данных для хранения такого числа - int (32 бита на строку), а для извлечения закодированных данных требуется до 7 операций по модулю (%).
Наибольшее возможное значение для метода суммирования 2 ^ n127, который может быть сохранен в виде tinyint (8 битов на строку) и для извлечения закодированных данных будет использоваться побитовое и (&), что несколько дешевле (и, следовательно, быстрее).
Вероятно, не проблема для того, что вы 'Вы работаете с ним, но это хорошая привычка выбирать тот метод, который дает вам наилучшее пространство и эффективность, иначе вы столкнетесь с серьезными проблемами, если ваше решение будет реализовано в больших масштабах.