我需要检查房间(Room1)的输入时间表(日期时间)是否与已经预约的房间(Room1)的时间表(相同的时间表或不在范围内)相冲突。我有这个问题:
SELECT {Reserved}.[Id] FROM {Reserved}
WHERE ('2017-07-14 8:00:00' between {Reserved}.[FromDate] and {Reserved}.[ToDate] ) and
( '2017-07-19 12:00:00'between {Reserved}.[FromDate] and {Reserved}.[ToDate] )
数据库样本数据:
2017-07-14 8:00:00
2017-07-17 12:00:00
但问题是它不会显示任何内容。谢谢。
答案 0 :(得分:0)
看起来你想检查两个范围是否重叠,逻辑是:
start_1 <= end_2 and end_1 >= start_2
根据您的需要,可能不需要=
。
这转换为
SELECT {Reserved}.[Id]
FROM {Reserved}
WHERE '2017-07-14 08:00:00' <= {Reserved}.[ToDate]
AND '2017-07-19 12:00:00' >= {Reserved}.[FromDate]