给用户一些时间,我想弄清楚一家商店是营业还是营业。
我的HoursOfOperation数据库如下所示:
dayid | openTime | closeTime
3 1500 2400
4 1500 2400
5 1500 100
6 1500 200
dayid是星期日-星期六:分别为0-6。
openTime和closeTime范围在0-2400之间。
如果用户时间在星期三说1800,那很容易。这个地方是开放的。但是,如果星期六是凌晨1点,该怎么办?大于openTime返回false,小于closeTime检查为true。 false && true等于false。
我尝试了多种类型的数据和业务逻辑。但是我正在努力解决这个问题。我想念什么?
最佳答案
您可以使用如下逻辑:
where dayid = @dayid and
( (openTime < closeTime and @timetocheck between openTime and closeTime) or
(openTime > closeTime and @timetocheck not between closeTime and openTime)
)
逻辑为:
如果
openTime
小于closeTime
,则当请求时间介于两者之间时,商店将打开。如果
openTime
大于closeTime
,则通常closeTime
将在凌晨。存储在closeTime
和openTime
之间关闭。因此,商店在其他时间营业。