>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 겹치는 날짜 범위를 효율적으로 식별하는 방법은 무엇입니까?

MySQL에서 겹치는 날짜 범위를 효율적으로 식별하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-18 08:16:11717검색

How to Efficiently Identify Overlapping Date Ranges in MySQL?

MySQL 날짜 범위 비교 알고리즘

MySQL에서는 특정 기간이 저장된 목록의 기간과 겹치는지 확인해야 하는 경우가 많습니다. 이 문제를 해결하기 위해 두 날짜 범위 간의 관계를 고려해 보겠습니다.

  • 완전히 포함: 한 범위가 다른 범위에 완전히 포함됩니다.
  • 겹침 시작 또는 끝: 범위가 다른 범위와 경계를 공유합니다.
  • 겹치지 않음: 공유된 경계가 없으며 한 범위가 다른 범위가 시작되기 전에 끝납니다.

중복 범위 식별

핵심은 겹치지 않는 범위를 찾는 것입니다. 이 조건을 부정적으로 정의하면 다음 기준으로 초점을 좁힐 수 있습니다.

  • 시작 시간이 대상 범위의 종료 시간보다 늦습니다.
  • 종료 시간이 대상 범위의 시작 시간보다 빠릅니다.

SQL에서는 이 논리를 쿼리 형태로 변환한 결과는 다음과 같습니다.

<code class="language-sql">SELECT *
FROM periods
WHERE NOT (range_start > @check_period_end OR range_end < @check_period_start)</code>

논리를 반대로 하면 다음과 같이 겹치는 범위를 검색할 수 있습니다.

<code class="language-sql">SELECT *
FROM periods
WHERE range_start <= @check_period_end AND range_end >= @check_period_start</code>

위 내용은 MySQL에서 겹치는 날짜 범위를 효율적으로 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.