PERIOD_CONTAINS
PERIOD_CONTAINS (기간 포함 여부)
PERIOD가 다른 PERIOD를 포함하거나, 같은 요소 타입의 시간적 순간(temporal instant)을 포함하면 TRUE를 반환해요.
본문
참고: 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 |
+-----------------+----------------+--------------+