간단하지만 많이 필요로 하는 두 데이터 기간의 overlap 판정을 위한 로직을 소개하려고 합니다.
다음의 두 기간이 있고, 겹치는 날짜가 있는 지를 판정해야합니다.
기간1: 시작일1 ~ 종료일1 (예: 2016-06-17~2016-06-24)
기간2: 시작일2 ~ 종료일2 (예: 2016-06-20~2016-06-30)
위의 두 기간은 일부 겹치는 구간이 있습니다.
필요한 결과값은 두 기간이 겹침 여부 (bool)이므로 다음의 로직을 적용하여 복잡한 조건 없이 결과만 판단할 수 있습니다.
Reference를 보시면 해당 조건의 proof가 있으므로 참조하세요.
(시작일1 <= 종료일2) AND (종료일1 >= 시작일2)
특별한 내장함수 등의 활용이 없으므로, 대부분의 RDB에서 동일하게 활용할 수 있습니다.
Reference
http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
'Database > MSSQL' 카테고리의 다른 글
Way to access the next row value (0) | 2016.10.12 |
---|---|
Insert or update at once (0) | 2016.10.12 |
transaction log for database is full (0) | 2015.05.12 |
a connection was successfully established with the server, but then an error occurred during the pre-login handshake (0) | 2015.04.28 |
Unique index setting #2 (with Criteria) (0) | 2015.03.29 |