如何在2列中的sql之间

时间:2018-04-19 21:22:22

标签: sql request

我,我搜索是否可以保留日期,这是我的表时间戳:

+------------+-----------+-----------------+----------------+-------------+--------------+----------------+--------------+------------+
| idReserver | demandeur | reserverAvecQui | reserverWhy    | saisieQuant | reserverDate | reserverStartH | reserverEndH | reserverOk |
+------------+-----------+-----------------+----------------+-------------+--------------+----------------+--------------+------------+
|          1 | test.fr  | anonyme         | Je ne sais pas |  1524167863 |   1524175200 |     1524222000 |   1524240000 |       NULL |
+------------+-----------+-----------------+----------------+-------------+--------------+----------------+--------------+------------+

我尝试这个请求SQL:

这是我的要求:

select * from calendar WHERE reserverStartH >=1524222000  AND reserverEndH <=1524240000;

是请求找到它,如果找到它,我们无法重新保留它,因为人在这个时间戳忙。 但现在我想要这个请求:

select * from calendar WHERE reserverStartH >=1524222000  AND reserverEndH <=1524222222;

没有数据,如果不是数据,我无法保留,但是这是不可能的,因为在1524222000和1524222222中人类现在很忙。

我如何查找数据?

请求查找数据相等我们无法插入人类忙的新时间戳 请求找不到数据相等我们可以插入新的时间戳,此时人类是免费的

1 个答案:

答案 0 :(得分:0)

您想要检查两个间隔是否有交叉点。

例如,如果(a,b)与(c,d)相交。示例:if(10,20)与(15,25)的交点。它确实(15,20)。

查找交集是否存在的逻辑条件是:c <= b AND d >= a

将其翻译成您的SQL:

select * from calendar 
  WHERE 1524222000 <= reserverEndH AND 1524222222 >= reserverStartH;