给用户一些时间,我想弄清楚一家商店是营业还是营业。

我的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将在凌晨。存储在closeTimeopenTime之间关闭。因此,商店在其他时间营业。

07-24 22:24