PERIOD 함수

PERIOD 함수

Snowflake는 PERIOD 값을 구성·검사·비교·결합하는 스칼라 함수를 제공합니다. PERIOD 값은 반개방(half-open) 구간 [begin, end)입니다. 시작 경계는 포함되고 끝 경계는 배타적입니다.

출처: Snowflake SQL Reference

본문

달리 명시되지 않는 한:

  • 두 PERIOD 인수는 동일한 요소 타입이어야 합니다(예: 모두 PERIOD(DATE)).
  • NULL 입력은 NULL 결과를 만듭니다.
  • 술어 함수는 BOOLEAN을 반환합니다.
  • 집합 연산 함수는 PERIOD를 반환합니다(결과가 비어 있으면 NULL).

생성자 및 접근자 (Constructor and accessors)

  • PERIOD_CONSTRUCT
  • PERIOD_BEGIN
  • PERIOD_END

부울 술어 (Boolean predicates)

  • PERIOD_OVERLAPS
  • PERIOD_CONTAINS
  • PERIOD_EQUALS
  • PERIOD_PRECEDES
  • PERIOD_SUCCEEDS
  • PERIOD_IMMEDIATELY_PRECEDES
  • PERIOD_IMMEDIATELY_SUCCEEDS
  • PERIOD_MEETS

집합 연산 (Set operations)

  • PERIOD_INTERSECT
  • PERIOD_LDIFF
  • PERIOD_RDIFF

예제

PERIOD 값은 반개방이므로, 연속된 두 PERIOD는 겹치지 않으면서 만납니다(meet). 앞 PERIOD는 공유 경계 시점(배타적 끝 경계)을 포함하지 않지만, 뒤 PERIOD는 공유 경계 시점(포괄적 시작 경계)을 포함합니다:

WITH periods AS (
  SELECT
    PERIOD(DATE) '[2024-01-01, 2024-04-01)' AS p1,
    PERIOD(DATE) '[2024-04-01, 2024-07-01)' AS p2
)
SELECT
    PERIOD_OVERLAPS(p1, p2) AS overlaps,
    PERIOD_MEETS(p1, p2) AS meets,
    PERIOD_CONTAINS(p1, DATE '2024-04-01') AS p1_contains_boundary,
    PERIOD_CONTAINS(p2, DATE '2024-04-01') AS p2_contains_boundary
  FROM periods;
+----------+-------+----------------------+----------------------+
| OVERLAPS | MEETS | P1_CONTAINS_BOUNDARY | P2_CONTAINS_BOUNDARY |
|----------+-------+----------------------+----------------------|
| False    | True  | False                | True                 |
+----------+-------+----------------------+----------------------+

PERIOD 값을 저장·조회·정렬·결합하는 전체 테이블 기반 예제는 PERIOD 데이터 타입 예제를 참고하세요.

함수 목록

함수 설명
PERIOD_BEGIN PERIOD의 포함된 시작 경계를 반환합니다.
PERIOD_CONSTRUCT 시작·끝 시간 값에서 PERIOD를 구성합니다.
PERIOD_CONTAINS PERIOD가 다른 PERIOD 또는 시간 시점을 포함하는지 검사합니다.
PERIOD_END PERIOD의 배타적 끝 경계를 반환합니다.
PERIOD_EQUALS 두 PERIOD 값이 같은 경계를 갖는지 검사합니다.
PERIOD_IMMEDIATELY_PRECEDES 첫 PERIOD가 두 번째 PERIOD가 시작하는 정확히 그 지점에서 끝나는지 검사합니다.
PERIOD_IMMEDIATELY_SUCCEEDS 첫 PERIOD가 두 번째 PERIOD가 끝나는 정확히 그 지점에서 시작하는지 검사합니다.
PERIOD_INTERSECT 두 PERIOD 값의 겹치는 부분 구간을 반환하거나, 분리되어 있으면 NULL을 반환합니다.
PERIOD_LDIFF 첫 PERIOD가 두 번째가 시작하기 전의 부분을 반환하거나 NULL을 반환합니다.
PERIOD_MEETS 두 PERIOD 값이 어느 순서로든 인접해 있는지 검사합니다.
PERIOD_OVERLAPS 두 PERIOD 값이 시점을 공유하는지 검사합니다.
PERIOD_PRECEDES 첫 PERIOD가 두 번째가 시작하는 시점 또는 그 이전에 끝나는지 검사합니다.
PERIOD_RDIFF 첫 PERIOD가 두 번째가 끝난 후의 부분을 반환하거나 NULL을 반환합니다.
PERIOD_SUCCEEDS 첫 PERIOD가 두 번째가 끝나는 시점 또는 그 이후에 시작하는지 검사합니다.

더 알아보기 (Learn more)