您好我有一张包含两个时间列[StartTime]
和[EndTime]
表记录包含StartTime 07:00
和EndTime 13:30
如果用户选择@StartTime = 09:00
和@EndTime = 11:00
SELECT * FROM TBL WHERE [StartTime] >= '09:00' AND [EndTime] <= '11:00'
不会返回任何记录。
我的查询怎么办?
答案 0 :(得分:2)
如果我理解了您的问题,那么您正在寻找与查询范围重叠的行。您可以使用以下范例来查找重叠:
where [StartTime] <= @EndTime
and [EndTime] >= @StartTime
请考虑以下插图:
MATCHING ROWS Query: |----------------------------------| |----| |-----------------------| |-----------------------------| |------------------------------------------------| NON-MATCHING ROWS Query: |----------------------------------| |---| |----|
请注意,在每个匹配的情况下,结束时间在查询开始时或之后,开始时间在查询结束时或之前。
答案 1 :(得分:1)
试试这个
SELECT * FROM TBL
WHERE
('09:00' between [StartTime] AND [EndTime]) or ('11:00' between [StartTime] AND [EndTime])