检查两个日期时间选取器之间的冲突
本文关键字:选取 之间 冲突 时间 日期 两个 检查 | 更新日期: 2023-09-27 18:32:42
所以我正在制作一个简单的预订系统,C#和sql。我有日期时间选择器 1 和日期时间选择器 2。例如,datetimepicker = aug 1 2009 和 datetimepicker2 = aug 3 2009 由用户保存在 sql 中。
如何处理,以便下一个尝试获取日期 1-3 的客户将被迫选择另一个日期?
您可以运行如下查询:
select count(*) as cnt
from reservations t
where
not
(
(@dtTo <= t.DateFrom)
or
(@dtFrom >= t.DateTo)
)
假设@dtFrom,@dtTo是第二个用户选择的日期,并假设
您有一个包含DateFrom
列和DateTo
列的reservations
表。
- 如果此查询返回 0,则允许第二个用户保存。
- 如果它返回一个数字> 0,则不允许第二个用户保存。
这背后的想法是什么:[dateFrom1, dateTo1]
和[dateFrom2, dateTo2]
的两个时间段不是
对于此基于预留的方案,当且仅当:dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2
(把它画在一张纸上,你就会明白为什么)。
所以如果否定not ( dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2 )
是真的,这两个段是重叠/冲突的。