Select 其中日期时间开始大于并且结束小于
Select where datetime start greater than and end less than
我有一个 table,开始和结束字段的值如下:
start | end
2021-09-24 17:00:00 | 2021-10-01 08:00:00
我一头雾水,想不通为什么这个语句没有结果:
SELECT *
FROM `oncall`
WHERE `start` >= '2021-10-01 02:00:00'
AND `end` <= '2021-10-01 08:00:00'
尽管我的示例行中的日期范围包含上述范围。
我正在尝试查找与数据库中值的开始和结束重叠的任何行。
查看您数据库中的条目和您正在使用的查询,您似乎实际上是在寻找日期间隔 overlap 查询即检查 [2021-10-01 02:00:00, 2021-10-01 08:00:00)
是否以某种方式重叠 [2021-09-24 17:00:00, 2021-10-01 08:00:00)
的查询。
SELECT *
FROM `oncall`
WHERE @d2 > `start` AND `end` > @d1
-- replace @d1 and @d2 with actual values
请注意,此查询适用于所有类型的重叠。例如,如果您的数据库中有这对日期:
2021-10-11 | 2021-10-15
那么所有这些输入对都将匹配:
2021-10-01 | 2021-10-12
2021-10-14 | 2021-10-20
2021-10-01 | 2021-10-20
2021-10-11 | 2021-10-14
我有一个 table,开始和结束字段的值如下:
start | end
2021-09-24 17:00:00 | 2021-10-01 08:00:00
我一头雾水,想不通为什么这个语句没有结果:
SELECT *
FROM `oncall`
WHERE `start` >= '2021-10-01 02:00:00'
AND `end` <= '2021-10-01 08:00:00'
尽管我的示例行中的日期范围包含上述范围。
我正在尝试查找与数据库中值的开始和结束重叠的任何行。
查看您数据库中的条目和您正在使用的查询,您似乎实际上是在寻找日期间隔 overlap 查询即检查 [2021-10-01 02:00:00, 2021-10-01 08:00:00)
是否以某种方式重叠 [2021-09-24 17:00:00, 2021-10-01 08:00:00)
的查询。
SELECT *
FROM `oncall`
WHERE @d2 > `start` AND `end` > @d1
-- replace @d1 and @d2 with actual values
请注意,此查询适用于所有类型的重叠。例如,如果您的数据库中有这对日期:
2021-10-11 | 2021-10-15
那么所有这些输入对都将匹配:
2021-10-01 | 2021-10-12
2021-10-14 | 2021-10-20
2021-10-01 | 2021-10-20
2021-10-11 | 2021-10-14