PERIOD_CONTAINS

PERIOD_CONTAINS (기간 포함 여부)

PERIOD가 다른 PERIOD를 포함하거나, 같은 요소 타입의 시간적 순간(temporal instant)을 포함하면 TRUE를 반환해요.

출처: Snowflake SQL Reference - PERIOD_CONTAINS

본문

참고: PERIOD 데이터 타입, Period functions

구문

PERIOD_CONTAINS에는 두 개의 오버로드가 있어요. 하나는 PERIOD가 다른 PERIOD를 포함하는지 검사하고, 다른 하나는 PERIOD가 단일 시간적 순간을 포함하는지 검사해요.

PERIOD 안의 PERIOD

PERIOD_CONTAINS( <period1>, <period2> )

PERIOD 안의 순간(instant)

PERIOD_CONTAINS( <period>, <value> )

인자

PERIOD 안의 PERIOD

period1

바깥쪽 PERIOD 값이에요.

period2

안쪽 PERIOD 값이에요. period1과 같은 요소 타입을 가져야 해요.

PERIOD 안의 순간

period

검사할 PERIOD 값이에요.

value

논리적 타입이 PERIOD 요소 타입과 일치하는 DATE, TIME 또는 TIMESTAMP 값이에요.

반환 값

BOOLEAN이에요.

사용 시 참고 사항

  • PERIOD 오버로드: PERIOD_BEGIN(period1) <= PERIOD_BEGIN(period2)이고 PERIOD_END(period2) <= PERIOD_END(period1)일 때 TRUE예요.

  • 스칼라 오버로드: PERIOD_BEGIN(period) <= value < PERIOD_END(period)일 때 TRUE예요(시작 경계 포함, 끝 경계 제외).

  • 제외되는 끝 경계는 포함되지 않아요. 예를 들어 PERIOD_CONTAINS(PERIOD(DATE) '[2024-01-01, 2024-04-01)', DATE '2024-04-01')은 FALSE예요.

예시

이 예시는 기간이 완전히 둘러싸인 기간과 그 포함되는 시작 경계는 포함하지만, 제외되는 끝 경계는 포함하지 않음을 보여줘요.

SELECT
 PERIOD_CONTAINS(
 PERIOD(DATE) '[2024-01-01, 2024-04-01)',
 PERIOD(DATE) '[2024-02-01, 2024-03-01)'
 ) AS contains_period,
 PERIOD_CONTAINS(
 PERIOD(DATE) '[2024-01-01, 2024-04-01)',
 DATE '2024-01-01'
 ) AS contains_begin,
 PERIOD_CONTAINS(
 PERIOD(DATE) '[2024-01-01, 2024-04-01)',
 DATE '2024-04-01'
 ) AS contains_end;
+-----------------+----------------+--------------+
| CONTAINS_PERIOD | CONTAINS_BEGIN | CONTAINS_END |
|-----------------+----------------+--------------|
| True            | True           | False        |
+-----------------+----------------+--------------+

더 알아보기