首页 > 解决方案 > SQL 中的非包含 BETWEEN

问题描述

我正在尝试从类似于此的 SQL 数据库中获取所有冲突的时间表:

SELECT * FROM schedule WHERE x BETWEEN startTime AND endTime

其中 x 是时间戳中给定的任何时间。

问题在于,如果我说从下午 1:00 到下午 2:00 的时间表,然后我尝试使用 x = 2:00 PM 和 startTime = 2:00 PM,我会从我的语句执行中得到回报.

是否有允许不包含 BETWEEN 调用的标志或类似的东西?

标签: mysqltimestampbetween

解决方案


BETWEEN..AND..基本上是>=AND<=运算符组合的语法糖,具有相同的性能。

如果 expr 大于或等于 min 且 expr 小于或等于 max,则 BETWEEN 返回 1,否则返回 0。这相当于表达式 (min <= expr AND expr <= max)

对于非包含范围检查,您可以使用>AND<运算符:

SELECT * FROM schedule 
WHERE x > startTime AND 
      x < endTime

推荐阅读