给定用户时间,我正试图弄清楚一家商店是开着还是关着。
我的HoursOfOperation数据库如下所示:
dayid | openTime | closeTime
3 1500 2400
4 1500 2400
5 1500 100
6 1500 200
星期日是星期日-星期六:分别为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
之间关闭。因此,这家商店在其他时间营业