집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 겹치는 날짜 범위를 효율적으로 식별할 수 있는 방법은 무엇입니까?
SQL 날짜 범위 비교
데이터베이스에 저장된 날짜 범위로 작업할 때 특정 날짜 범위가 기존 범위와 겹치는지 확인해야 할 수 있습니다. 이는 SQL 데이터베이스에서 반복되는 문제입니다.
이 문제를 해결하는 한 가지 방법은 비교 논리를 뒤집는 것입니다. 주어진 범위와 겹치는 범위를 찾는 대신 겹치지 않는 범위를 찾고 있습니다. 겹치지 않는 기간을 식별함으로써 나머지 기간은 겹치는 기간이라는 결론을 내릴 수 있습니다.
이 논리를 설명하기 위해 다음 예를 살펴보겠습니다.
<code> |-------------------| 与之比较 |---------| 包含在内 |----------| 包含在内,起始时间相同 |-----------| 包含在内,结束时间相同 |-------------------| 包含在内,起始和结束时间相同 |------------| 未完全包含,起始时间重叠 |---------------| 未完全包含,结束时间重叠 |-------------------------| 起始时间重叠,范围更大 |-----------------------| 结束时间重叠,范围更大 |------------------------------| 完全重叠</code>
그림에서 알 수 있듯이 비교 기간과 겹치지 않는 기간은 비교 기간이 끝난 후에 시작되거나 비교 기간이 시작되기 전에 종료됩니다.
반대로, 비교 기간과 겹치는 기간은 다음 범주에 속합니다.
이 논리를 SQL로 변환하면 다음 쿼리를 사용하여 특정 확인 에포크와 겹치는 모든 에포크를 검색할 수 있습니다.
<code class="language-sql">SELECT * FROM periods WHERE range_start < @check_period_end AND range_end > @check_period_start;</code>
겹치지 않는 에포크를 찾는 논리를 반대로 함으로써 이러한 에포크를 효과적으로 식별하고 결과에서 제외하여 일치하는 에포크 목록을 남길 수 있습니다.
위 내용은 SQL에서 겹치는 날짜 범위를 효율적으로 식별할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!