从数据库检查输入的日期时间和日期时间

时间:2017-07-14 08:15:30

标签: sql datetime

我需要检查房间(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

但问题是它不会显示任何内容。谢谢。

1 个答案:

答案 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]