PERIOD 함수
PERIOD 함수
Snowflake는 PERIOD 값을 구성·검사·비교·결합하는 스칼라 함수를 제공합니다. PERIOD 값은 반개방(half-open) 구간 [begin, end)입니다. 시작 경계는 포함되고 끝 경계는 배타적입니다.
본문
달리 명시되지 않는 한:
- 두 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가 두 번째가 끝나는 시점 또는 그 이후에 시작하는지 검사합니다. |