2009-11-15 4 views
3

작성 중입니다. 시작 날짜 (datepicker 포함) 및 종료 날짜 (datepicker 포함)가있는 일부 개체를 만듭니다. 이제이 개체의 날짜 범위가 데이터베이스에 저장된 다른 개체의 날짜 범위와 겹치는 지 확인해야합니다. 만약 그렇다면 데이터베이스에 저장할 수는 없지만 그렇게 할 수 없다면 할 수 있습니다.프로그램에서 중복 된 날짜 확인 (vb.net)

누구나 어떻게 할 수 있습니까?

+0

이것은 실제로 VB.NET과 관련이 없으며 하나의 쿼리에서이를 확인하는 데 필요한 SQL 로직에 관한 것입니다. –

답변

9

은 동일합니다. 두 조건이 모두 true이면 새 이벤트가 이전 이벤트와 겹칩니다.

select * 
from  YourTable 
where @start < End and @end > Start 
+0

전화하세요. 단순화가 있었지만 거기에 도달 할 수 없다는 느낌이 들었습니다. –

+0

감사합니다, 너희들 모두 – Ayrton

+0

예 - 1am에 이것이 최고의 충고가 있었다 :) +1 – ppumkin

5

중첩 시나리오에는 세 가지 시나리오가 있습니다. 시작, 포함 끝 및 줄 바꿈 범위입니다. 이것은 다음과 같이 SQL로 표현할 수 있습니다.

select count(1) 
from  YourTable 
where (@start >= Start and @start <= End) /* contains start */ 
or  (@end >= Start and @end <= End) /* contains end */ 
or  (@start < Start and @end > End) /* wraps range */ 

이 쿼리를 데이터베이스에 실제로 적용하는 방법은 현재 데이터 액세스 방법에 따라 다릅니다. 게리는 간단한 중복 검사가 새 이벤트는 다른 이벤트가 끝나기 전에 시작하고, 그것의 시작 후 종료 있는지 확인하는 것입니다

select count(1) 
from  YourTable 
where (@start < End and @end > Start) 
3

을 제안 무엇을 아래