SQL选择两小时之间的记录

时间:2012-09-02 22:17:26

标签: php sql cakephp date time

我有一个包含两个字段的表格,用于描述每个商店的营业时间 - 24小时格式整数中的“from”和“to”。我创建了一个搜索页面,允许用户查找在给定时间打开的商店。

我真的不知道如何创建SQL查询,主要问题是有两种情况。

一种情况是,从值大于值,例如从23到5,它给出两个区间23到24和1到5。

第二种情况是当值大于值时(比如从8到22),我得到一个间隔。

知道如何创建查询,这两种情况都适用吗?

1 个答案:

答案 0 :(得分:1)

让我们来处理这个表模式:

store
id  fromH  toH
 1     23   5
 2      8  22

和参数@T(您要查找的小时)

然后选择是:

select *
from store
where 
  ( fromH < toH and @t between fromH and toH ) or
  ( fromH > toH and 
         (@t between fromH and 24 OR
         (@t between 1 and toH )
  )

<强>解释

从商店中选择所有字段:

  • 开始营业时间&gt;关闭开放时间,你的时间介于两者之间。
  • 开始营业时间&lt;关闭营业时间,您的营业时间为营业时间和24小时之间或1小时和关闭时间。