Следует иметь в виду, что в некоторых местах (например, в Аризоне) DST не проводится.Возможно, вы захотите убедиться, что в вашей базе данных достаточно информации, чтобы вы могли различить LA и Phoenix, если это окажется необходимым.
Предполагая, что вы следуете совету ITroubs и внесете коррективы в базу данных (и, возможно, информацию о том,хранилище находится в DST-уважаемой локали), вы можете сделать следующее:
Создать свой код, чтобы он проверял, действует ли DST, и правильно строит ваши запросы.Если все ваши магазины находятся в Нью-Йорке и Лос-Анджелесе, вы можете просто добавить 1 к смещению, когда это необходимо.Если нет, вам понадобится запрос, который использует разные правила для хранилищ DST и не-DST.Что-то вроде:
SELECT store_id
FROM hours
WHERE
(supportsDST = true AND opens < dstAdjustedNow AND closes > dstAdjustedNow)
OR (supportsDST = false AND opens < UTCNow AND closes > UTCNow)
Если вы идете по этому пути, я рекомендую попытаться как можно больше централизовать и изолировать код, который занимается этим.
Кроме того, вы не упоминаете об этом, но я предполагаю, что магазин с разделенным временем будет иметь две строки в таблице часов, по одной на каждый открытый блок.