检查两个datetimepicker之间的冲突

时间:2014-11-30 11:01:23

标签: c# sql

所以我正在制作一个简单的预订系统,C#和sql。 我有datetimepicker 1和datetimepicker 2。 对于前者datetimepicker = aug 1 2009和datetimepicker2 = aug 3 2009由用户保存在sql中。

如何处理,以便下一个试图获得日期1-3的客户将被迫选择另一个日期?

1 个答案:

答案 0 :(得分:0)

您可以运行如下的查询:

select count(*) as cnt
from reservations t
where
not 
(

    (@dtTo <= t.DateFrom)

    or

    (@dtFrom >= t.DateTo)

)

假设@dtFrom,@ dtTo是第二个用户选择的日期,并假设为 您有一个reservations表,其中包含DateFromDateTo列。

  • 如果此查询返回0,则允许第二个用户保存。
  • 如果它返回一个数字&gt; 0,然后不允许第二个用户保存。

这背后的想法是什么:
两段时间[dateFrom1, dateTo1][dateFrom2, dateTo2]不是
当且仅在以下情况下,对于此基于预订的方案存在冲突(即不重叠):
dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2
(把它画在一张纸上,你会明白为什么) 所以如果否定了 not ( dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2 )
是的,这两个部分是重叠/冲突的。