날짜 및 시간 데이터 타입¶
Snowflake는 날짜, 시간, 타임스탬프(날짜 + 시간의 결합)를 관리하기 위한 데이터 타입을 지원합니다. Snowflake는 날짜, 시간, 타임스탬프 조작에 사용되는 문자열 상수에 대한 형식도 지원합니다.
데이터 타입¶
Snowflake는 다음과 같은 날짜 및 시간 데이터 타입을 지원합니다.
참고
DATE 및 TIMESTAMP 데이터의 경우 Snowflake는 1582년에서 9999년 사이의 연도를 사용할 것을 권장합니다. Snowflake는 이 범위 밖의 연도를 허용하지만, 그레고리력의 제한 으로 인해 1582년 이전 연도는 피해야 합니다.
DATE¶
Snowflake는 날짜를 저장하기 위한 단일 DATE 데이터 타입(시간 요소 없음)을 지원합니다.
DATE는 가장 일반적인 형식(YYYY-MM-DD, DD-MON-YYYY 등)의 날짜를 허용합니다.
또한 허용되는 모든 TIMESTAMP 값은 날짜에 유효한 입력값이지만 TIME 정보는 잘립니다.
DATETIME¶
DATETIME는 TIMESTAMP_NTZ와 동의어입니다.
간격 데이터 타입¶
간격 데이터 타입은 기간을 나타내는 값을 저장합니다. 간격은 두 날짜 또는 시간 간의 차이로 계산할 수 있습니다. 간격은 기간만 정의하므로 시작 또는 종료 시점이 없습니다. 예를 들어, 간격을 3년 7개월로 정의할 수 있습니다.
Snowflake는 간격 데이터 타입의 다음 연도별 변형을 지원합니다.
데이터 타입 |
설명 |
|---|---|
INTERVAL YEAR |
기간을 연도 단위로 나타냅니다. |
INTERVAL YEAR TO MONTH |
기간을 연도 및 월 단위로 나타냅니다. |
INTERVAL MONTH |
기간을 월 단위로 나타냅니다. |
Snowflake는 다음과 같은 간격 데이터 타입의 일-시간 변형을 지원합니다.
데이터 타입 |
설명 |
|---|---|
INTERVAL DAY |
기간을 일 단위로 나타냅니다. |
INTERVAL DAY TO HOUR |
기간을 일 및 시간 단위로 나타냅니다. |
INTERVAL DAY TO MINUTE |
기간을 일, 시간, 분 단위로 나타냅니다. |
INTERVAL DAY TO SECOND |
기간을 일, 시간, 분, 초 및 소수 자리 초 단위로 나타냅니다. |
INTERVAL HOUR |
기간을 시간 단위로 나타냅니다. |
INTERVAL HOUR TO MINUTE |
기간을 시간 및 분 단위로 나타냅니다. |
INTERVAL HOUR TO SECOND |
기간을 시간, 분, 초 및 소수 자리 초 단위로 나타냅니다. |
INTERVAL MINUTE |
기간을 분 단위로 나타냅니다. |
INTERVAL MINUTE TO SECOND |
기간을 분, 초, 소수 자리 초 단위로 나타냅니다. |
INTERVAL SECOND |
기간을 초 및 소수 자리 초 단위로 나타냅니다. |
다음 섹션에서는 간격 데이터 타입을 더 자세히 설명합니다.
참고
날짜 및 시간 산술의 경우 :ref:`간격 상수 <label-interval_constants>`를 사용할 수도 있습니다. 그러나 간격 상수는 간격 저장소를 열 유형으로 지원하지 않습니다.
간격 데이터 타입의 이점¶
간격 데이터 타입은 다음과 같은 이점을 제공합니다.
모호성 없이 정확한 날짜 산술을 보장합니다.
정수 기반 기간의 수동 변환 및 캐스팅 작업의 필요성을 제거합니다.
시간 간격을 나타내는 데이터의 저장소를 최적화합니다.
기간 데이터에 대한 쿼리 실행을 최적화합니다.
Databricks, Oracle, Teradata와 같은 서드 파티 데이터베이스에서 데이터 마이그레이션을 간소화합니다.
ANSI 표준을 완전히 준수합니다.
간격 데이터 타입의 구문¶
간격 데이터 타입을 지정하려면 다음 구문을 사용합니다.
여기서
속성:
:samp:`{precision}`은 허용되는 총 자릿수입니다. 전체 자릿수는 ``1``~``9``의 범위로 지정할 수 있습니다.
기본값:
9:samp:`{fractional_seconds_precision}`은 초의 소수 부분에 있는 자릿수입니다. 시간 전체 자릿수는 ``0``(초)~``9``(나노초)의 범위로 지정할 수 있습니다.
기본값:
9
간격 데이터 타입을 지정할 때 이 구문을 사용합니다. 예를 들어, 다음 테이블에는 INTERVAL YEAR TO MONTH 유형의 duration 열이 있습니다.
간격 값 표현하기¶
간격 리터럴 또는 간격 형식을 사용하여 간격 값을 나타낼 수 있습니다.
간격 리터럴¶
간격 리터럴은 문자열 리터럴에서 기간을 지정하는 식입니다. 다음 구문을 사용하여 간격 리터럴을 지정합니다.
여기서
간격 형식¶
특정 형식의 문자열 리터럴은 간격 값을 나타낼 수 있습니다.
연도 및 월 값을 지정하려면 다음 형식을 사용합니다.
여기서
sign`은 양수(:code:`+) 또는 음수(-) 기간을 지정하는 필수 기호입니다.기본값:
+.:samp:`{Y}`는 연도 수입니다. 허용되는 자릿수(전체 자릿수)는 값의 데이터 타입에 따라 다릅니다.
일, 시간, 초, 소수 자리 초의 값을 지정하려면 다음 형식을 사용합니다.
여기서
sign`은 양수(:code:`+) 또는 음수(-) 기간을 지정하는 필수 기호입니다.기본값:
+.:samp:`{D}`는 일 수입니다. 허용되는 자릿수(전체 자릿수)는 값의 데이터 타입에 따라 다릅니다.
다음 유형의 값에 대해 :samp:`{D}`를 생략합니다.
INTERVAL HOUR
INTERVAL HOUR TO MINUTE
INTERVAL HOUR TO SECOND
INTERVAL MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL SECOND
:samp:`{HH24}`는 시간을 나타내는 두 자리 숫자로, ``00``~``23``의 범위입니다.
다음 유형의 값에 대해 :samp:`{HH24}`를 생략합니다.
INTERVAL DAY
INTERVAL MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL SECOND
:samp:`{MI}`은 분 수를 나타내는 두 자리 숫자로, ``00``~``59``의 범위입니다.
다음 유형의 값에 대해 :samp:`{MI}`를 생략합니다.
INTERVAL DAY TO HOUR
INTERVAL DAY
INTERVAL HOUR
INTERVAL SECOND
:samp:`{SS}`는 초 수를 나타내는 두 자리 숫자로, ``00``~``59``의 범위입니다.
다음 유형의 값에 대해 :samp:`{SS}`를 생략합니다.
INTERVAL DAY
INTERVAL DAY TO HOUR
INTERVAL DAY TO MINUTE
INTERVAL HOUR
INTERVAL HOUR TO MINUTE
INTERVAL MINUTE
:samp:`{F}`는 초를 포함하는 데이터 타입의 소수 자리 초 수입니다. 허용되는 자릿수(전체 자릿수)는 값의 데이터 타입에 따라 다릅니다.
다음 사용법 노트는 간격 형식의 문자열 리터럴에 적용됩니다.
CAST 또는 TO_CHAR 함수를 사용하여 간격을 텍스트 문자열로 명시적으로 캐스팅하는 경우 문자열 리터럴 표현이 적용됩니다.
필드의 선행 0은 전체 자릿수를 지정합니다.
간격 값의 예제¶
다음 테이블은 다양한 간격 값을 나타내는 방법을 보여줍니다. 테이블에 표시된 값은 간격 값에 대해 다음 규칙을 따릅니다.
양수 값에서 더하기 기호 :code:`+`는 간격 리터럴 값의 경우 선택 사항이지만 간격 형식 값의 경우 필수입니다.
간격 리터럴 값에서 괄호 안의 값은 허용되는 자릿수인 전체 자릿수를 지정합니다. 예를 들어, ``YEAR(3)``은 연도에 3자리 숫자가 허용됨을 지정합니다.
간격 형식 값에서 기본 필드(선행 필드)는 선행 0을 포함하지 않습니다. 하위 필드는 고정 자릿수를 사용합니다. 예를 들어, ``+1-08``과 같은 YEAR TO MONTH 값에서 연도 필드에는 선행 0이 없으며 월 필드는 2자리 숫자를 사용합니다.
지속 시간 |
타입 |
간격 리터럴 값 |
간격 형식 값 |
|---|---|---|---|
양수 5년 |
INTERVAL YEAR |
|
|
양수 1년 8개월 |
INTERVAL YEAR TO MONTH |
|
|
음수 5개월 |
INTERVAL MONTH |
|
|
양수 14개월 |
INTERVAL MONTH |
|
|
음수 44년 11개월 |
INTERVAL YEAR TO MONTH |
|
|
양수 11일 10시간 9분 |
INTERVAL DAY TO MINUTE |
|
|
양수 2일 23시간 8분 23초 275밀리초 |
INTERVAL DAY TO SECOND |
|
|
양수 4초 300밀리초 |
INTERVAL SECOND |
|
|
날짜 및 시간 값이 포함된 작업¶
다음 테이블은 간격 값이 포함된 유효한 산술 연산에 대한 결과의 데이터 타입을 보여줍니다.
첫 번째 피연산자 |
연산자 |
두 번째 피연산자 |
결과 유형 |
|---|---|---|---|
타임스탬프 |
|
타임스탬프 |
간격 데이터 타입 |
날짜 또는 타임스탬프 |
|
간격 |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ 또는 TIMESTAMP_TZ |
날짜 또는 타임스탬프 |
|
간격 |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ 또는 TIMESTAMP_TZ |
간격 |
|
날짜 또는 타임스탬프 |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ 또는 TIMESTAMP_TZ |
숫자 |
|
간격 |
간격 데이터 타입 |
간격 |
|
숫자 |
간격 데이터 타입 |
간격 |
|
숫자 |
간격 데이터 타입 |
간격 |
|
간격 |
간격 데이터 타입 |
간격 |
|
간격 |
간격 데이터 타입 |
두 개의 간격 값이 포함된 작업의 경우 값은 모두 연도-월 간격 값이거나 둘 다 일-시간 간격 값이어야 합니다. 연도-월 간격 값과 일-시간 간격 값을 혼합하는 작업은 지원되지 않습니다. 작업에 두 개의 연도-월 간격 값이 포함된 경우 결과 유형은 연도-월 간격 유형입니다. 작업에 두 개의 일-시간 간격 값이 포함된 경우 결과 유형은 일-시간 간격 유형입니다.
간격 값을 인자로 허용하는 함수¶
다음 함수는 간격 값을 인자로 허용합니다.
간격 데이터 타입의 예¶
다음 예에서는 간격 데이터 타입을 사용하는 방법을 보여줍니다.
간격 데이터를 사용하여 산술 수행하기¶
다음 예에서는 간격 데이터를 사용하여 산술을 수행합니다.
날짜에 1년 1개월을 더합니다.
날짜에서 1년 1개월을 뺍니다.
타임스탬프에 기간을 추가합니다.
다음 예에서는 SYSTEM$TYPEOF 함수를 사용하여 쿼리에서 두 개의 타임스탬프 값을 뺄 때 INTERVAL DAY TO SECOND 값이 반환됨을 보여줍니다.
쿼리 결과를 간격 형식으로 보려면 식을 INTERVAL DAY(2) TO SECOND(2) 데이터 타입으로 캐스팅하여 전체 자릿수를 지정한 다음 VARCHAR로 캐스팅합니다.
연도-월 간격 데이터 삽입 및 쿼리하기¶
INTERVAL YEAR TO MONTH 열을 사용하여 공석 후보를 추적하는 테이블을 생성하고 데이터를 삽입합니다.
duration_of_experience` 열을 데이터 타입으로 캐스팅하지 않고 테이블을 쿼리하는 경우, 출력은 열 값을 각 행의 총 월 수로 표시합니다.
테이블을 쿼리하고 duration_of_experience 열을 VARCHAR 데이터 타입으로 캐스팅하는 경우, 출력은 간격 형식으로 열 값을 표시합니다.
일-시간 간격 데이터 삽입 및 쿼리하기¶
INTERVAL HOUR TO SECOND 열을 사용하여 다양한 소프트웨어 기능의 시간 제한 기간을 지정하는 테이블을 생성하고 데이터를 삽입합니다.
테이블을 쿼리하고 timeout_duration 열을 VARCHAR 데이터 타입으로 캐스팅합니다.
간격 데이터를 테이블에 복사하고 테이블 쿼리하기¶
다음 단계를 완료하여 간격 데이터가 있는 파일을 스테이징한 후 파일을 테이블에 복사합니다.
파일 시스템의 파일에서 다음 내용을 복사합니다.
이 예제에서는 파일이
interval_values.csv디렉터리에/examples/intervals/라는 이름으로 있다고 가정해 보겠습니다.스테이지를 생성합니다.
내부 스테이지 위치에 파일을 스테이징합니다.
데이터를 위한 테이블을 생성합니다.
생성한 테이블에 스테이징된 파일을 로드하려면 COPY INTO <테이블> 명령을 사용합니다.
로드된 데이터를 보려면 테이블을 쿼리하고 VARCHAR 타입으로 캐스팅하여 로드된 데이터를 확인합니다.
간격 데이터 타입에 대한 제한 사항¶
간격 데이터 타입에는 다음 제한 사항이 적용됩니다.
연도-월 간격 값은 일-시간 간격 값과 결합하거나 비교할 수 없습니다.
간격 상수 및 간격 데이터 타입의 값은 결합하거나 비교할 수 없습니다.
간격 상수는 간격 데이터 타입이 있는 열에 삽입할 수 없습니다.
VARIANT 값은 간격 값을 포함할 수 없습니다.
정형 데이터 타입 값은 간격 값을 포함할 수 없습니다.
간격 식은 사용자 정의 함수(UDFs) 또는 :doc:`Snowflake Scripting </developer-guide/snowflake-scripting/index>`에서 사용할 수 없습니다.
다음 유형의 테이블에는 간격 열이 포함될 수 없습니다.
간격 열에 대한 쿼리는 :doc:`/user-guide/search-optimization-service`의 이점을 활용할 수 없습니다.
TIME¶
Snowflake는 시간을 HH:MI:SS 형식으로 저장하기 위한 단일 TIME 데이터를 지원합니다.
TIME은 소수 초에 대한 선택적 정밀도 매개 변수를 지원합니다(예: TIME(3)). 시간 정밀도는 0(초)~9(나노초)의 범위로 지정할 수 있습니다. 기본 정밀도는 9입니다.
모든 TIME 값은 00:00:00 과 23:59:59.999999999 사이의 값이어야 합니다. TIME은 내부적으로 “wallclock” 시간을 저장하며 TIME 값에 대한 모든 작업은 타임존을 고려하지 않고 수행됩니다.
TIMESTAMP_LTZ , TIMESTAMP_NTZ , TIMESTAMP_TZ¶
Snowflake는 타임스탬프의 3가지 변형을 지원합니다.
- TIMESTAMP_LTZ:
TIMESTAMP_LTZ는 내부적으로 지정된 정밀도로 UTC 값을 저장합니다. 그러나 모든 작업은 TIMEZONE 세션 매개 변수로 제어되는 현재 세션의 타임존에서 수행됩니다.
TIMESTAMP_LTZ와 동의어입니다.
TIMESTAMPLTZ
TIMESTAMP WITH LOCAL TIME ZONE
- TIMESTAMP_NTZ:
TIMESTAMP_NTZ는 내부적으로 지정된 정밀도로 “wallclock” 시간을 저장합니다. 모든 작업은 타임존을 고려하지 않고 수행됩니다.
출력 형식에 타임존이 포함된 경우 UTC 표시기(
Z)가 표시됩니다.TIMESTAMP_NTZ가 TIMESTAMP의 기본값입니다.
TIMESTAMP_NTZ와 동의어입니다.
TIMESTAMPNTZ
TIMESTAMP WITHOUT TIME ZONE
DATETIME
- TIMESTAMP_TZ:
TIMESTAMP_TZ는 연결된 *타임존 오프셋*과 함께 UTC 값을 내부적으로 저장합니다. 타임존이 제공되지 않으면 세션 타임존 오프셋이 사용됩니다. 모든 작업은 각 레코드에 특정한 타임존 오프셋으로 수행됩니다.
TIMESTAMP_TZ와 동의어입니다.
TIMESTAMPTZ
TIMESTAMP WITH TIME ZONE
TIMESTAMP_TZ 값은 UTC의 시간을 기준으로 비교됩니다. 예를 들어 다음과 같이 서로 다른 타임존의 서로 다른 시간을 비교할 때 두 값이 UTC로는 같은 시간이므로 TRUE가 반환됩니다.
주의
TIMESTAMP_TZ는 현재 주어진 값에 대해 생성되는 순간에 실제 타임존 이 아니라 주어진 타임존의 오프셋 만 저장합니다. 이는 UTC에서는 사용하지 않는 일광 절약 시간제의 경우 특히 중요합니다.
예를 들어 TIMEZONE 매개 변수를 "America/Los_Angeles" 로 설정한 상태에서 값을 주어진 연도의 1월에 TIMESTAMP_TZ로 변환하면 -0800 의 타임존 오프셋이 저장됩니다. 나중에 이 값에 6개월을 추가하면 7월에 로스앤젤레스에 대한 오프셋이 -0700 이더라도 -0800 오프셋이 유지됩니다. 이는 이 값이 생성된 후에는 실제 타임존 정보("America/Los_Angeles")를 더 이상 사용할 수 없기 때문입니다. 다음 코드 샘플에서 이 동작을 보여줍니다.
TIMESTAMP¶
Snowflake에서 TIMESTAMP는 TIMESTAMP_* 변형 중 하나와 연결된 사용자 지정 별칭입니다. TIMESTAMP가 사용되는 모든 작업에서 연결된 TIMESTAMP_* 변형이 자동으로 사용됩니다. TIMESTAMP 데이터 타입은 테이블에 저장되지 않습니다.
TIMESTAMP와 연결된 TIMESTAMP_* 변형은 TIMESTAMP_TYPE_MAPPING 세션 매개 변수에 의해 지정됩니다. 기본값은 TIMESTAMP_NTZ입니다.
TIMESTAMP 별칭뿐 아니라 모든 타임스탬프 변형은 소수 초에 대한 선택적 정밀도 매개 변수도 지원합니다(예: TIMESTAMP(3)). 타임스탬프 정밀도는 0(초)~9(나노초)의 범위로 지정할 수 있습니다. 기본 정밀도는 9입니다.
타임스탬프 예¶
다음 예에서는 다양한 타임스탬프를 사용하여 테이블을 만듭니다.
먼저 (TIMESTAMP_NTZ에 매핑된) TIMESTAMP 열이 있는 테이블을 만듭니다.
다음으로, TIMESTAMP 변형 중 하나(TIMESTAMP_LTZ)를 명시적으로 사용합니다.
다양한 타임존과 함께 TIMESTAMP_LTZ 사용하기:
이 쿼리는 1월 2일의 해당 시간이 로스앤젤레스 현지 기준 08:00(UTC 기준으로는 16:00)임을 보여줍니다.
다음으로, 이 시간은 다른 타임존에 따라 변경됩니다.
테이블을 생성하고 TIMESTAMP_NTZ를 사용합니다.
다른 타임존의 두 가지 시간 모두 동일한 “현지” 시간으로 변환된다는 점에 유의하십시오.
다음으로, 세션 타임존을 변경해도 결과에는 영향을 미치지 않습니다.
테이블을 생성하고 TIMESTAMP_TZ를 사용합니다.
1월 1일 레코드는 세션 타임존을 상속했고 America/Los_Angeles 는 숫자형 타임존 오프셋으로 변환되었습니다.
다음으로, 세션 타임존을 변경해도 결과에는 영향을 미치지 않습니다.
지원되는 달력¶
Snowflake는 모든 날짜와 타임스탬프에 그레고리력을 사용합니다. 그레고리력은 1582년부터 시작하는 달력이지만 이전 연도를 인식하며, 이는 Snowflake가 율리우스력과 일치하도록 1582년 이전의 날짜(또는 1582년 이전의 날짜를 포함하는 계산)를 조정하지 않으므로 유의해야 할 중요한 사항입니다. UUUU 형식 요소는 음수 연도를 지원합니다.
날짜 및 시간 형식¶
이러한 모든 데이터 타입은 가장 모호하지 않은 날짜, 시간 또는 날짜 + 시간 형식을 허용합니다. 형식을 자동으로 감지하도록 구성되어 있을 때 Snowflake가 인식하는 형식은 AUTO 감지에서 지원되는 형식 섹션을 참조하십시오.
또한 날짜 및 시간 형식을 수동으로 지정 할 수도 있습니다. 형식을 지정할 때 다음 표에 나열된 대/소문자를 구분하지 않는 요소를 사용할 수 있습니다.
형식 요소 |
설명 |
|---|---|
|
4자리 숫자 [1] 연도입니다. |
|
2자리 숫자 [1] 연도로, TWO_DIGIT_CENTURY_START 세션 매개 변수에 의해 제어됩니다. 예를 들어, |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [1] 연도로, TWO_DIGIT_CENTURY_START 세션 매개 변수에 의해 제어됩니다. 예를 들어, 매개 변수를 |
|
2자리 숫자 [1] 월(:code:`01`= 1월 등)입니다. |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 월( |
|
간략한 월 이름 :sup:`[3]`입니다. |
|
전체 월 이름 :sup:`[3]`입니다. |
|
2자리 숫자 [1] 월의 일( |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 날짜( |
|
간략한 요일입니다. |
|
2자리 숫자 [1] 시간( |
|
2자리 숫자 [1] 시간( |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 시간( |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 시간( |
|
오전( |
|
오전( |
|
:code:`HH24`의 동의어입니다. |
|
:code:`H24`의 동의어입니다. |
|
2자리 숫자 [1] 분( |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 분( |
|
2자리 숫자 [1] 초( |
|
선행 0이 없는 1자리 숫자 또는 2자리 숫자 [2] 초( |
|
|
|
2자리 숫자:sup: |
|
ISO 형식 의 4자리 연도이며, BCE 연도의 경우 음수입니다. |
[1] 자릿수는 값을 텍스트로 직렬화할 때 생성되는 출력을 설명합니다. 텍스트를 구문 분석할 때 Snowflake는 지정된 자릿수까지 허용합니다. 예를 들어, 요일 숫자는 1자리 또는 2자리 숫자일 수 있습니다.
:sub:`[2] 자릿수는 값을 텍스트로 직렬화할 때 생성되는 출력을 설명합니다. 구문 분석은 지원되지 않습니다. 구문 분석이 필요한 경우 선행 0을 포함하는 동등한 형식을 사용합니다. 이러한 형식 요소는 BCR번들 2026_03`에서 활성화됩니다.
[3] MON 형식 요소의 경우 값을 텍스트로 직렬화할 때 생성되는 출력은 축약된 월 이름입니다. MMMM 형식 요소의 경우 값을 텍스트로 직렬화할 때 생성되는 출력은 전체 월 이름입니다. 텍스트를 구문 분석할 때 Snowflake는 MON 및 MMMM 모두에 대해 3자리 약어 또는 전체 월 이름을 허용합니다. 예를 들어, 텍스트를 구문 분석할 때 “January” 또는 “Jan”, “February” 또는 “Feb” 등이 허용됩니다.
참고
날짜 전용 형식을 사용하는 경우 연결된 시간은 해당 날짜의 자정으로 간주됩니다.
큰따옴표 사이에 있는 형식이나 위 요소 이외의 형식으로 된 항목은 모두 해석되지 않고 구문 분석/형식 지정됩니다. Snowflake는 리터럴 문자가 리터럴로 처리되도록 항상 큰따옴표로 묶을 것을 권장합니다(예:
"T","EST","Z").유효한 범위, 자릿수, 모범 사례에 대한 자세한 내용은 날짜, 시간 및 타임스탬프 형식 사용에 대한 추가 정보 섹션을 참조하십시오.
날짜 및 시간 형식 사용 예¶
다음은 FF 를 사용하여 출력의 소수 초 필드에 9자리 숫자가 있음을 나타내는 예입니다.
날짜 및 시간 상수¶
상수 (리터럴 이라고도 함)는 고정 데이터 값입니다. Snowflake는 문자열 상수를 사용하여 고정 날짜, 시간 또는 타임스탬프 값을 지정할 수 있도록 지원합니다. 문자열 상수는 항상 구분 기호 문자로 묶어야 합니다. Snowflake는 작은따옴표를 사용하여 문자열 상수를 구분할 수 있도록 지원합니다.
예:
이 문자열은 다음 매개 변수를 통해 설정된 바와 같이, 데이터 타입에 대한 입력 형식을 기준으로 DATE, TIME 또는 TIMESTAMP 값으로 구문 분석됩니다.
- DATE:
- TIME:
- TIMESTAMP:
예를 들어 테이블의 열에 특정 날짜를 삽입하는 방법은 다음과 같습니다.
간격 상수¶
간격 상수를 사용하여 날짜, 시간 또는 타임스탬프에 기간을 더하거나 뺄 수 있습니다. 간격 상수는 다음 구문을 가진 INTERVAL 키워드를 사용하여 구현됩니다.
모든 문자열 상수와 마찬가지로, Snowflake에는 간격 상수를 구분하는 작은따옴표가 필요합니다.
참고
간격 상수는 날짜 및 시간 산술을 지원하지만, 간격 저장소를 열 유형으로 지원하지는 않습니다. 간격 값을 열에 저장하려면 :ref:`간격 데이터 타입 <label-datatypes_interval_variations>`을 사용합니다.
INTERVAL 키워드는 정수를 하나 이상 지원하며, 선택적으로 날짜 또는 시간 부분을 하나 이상 지원합니다. 예:
INTERVAL '1 year'는 1년을 나타냅니다.INTERVAL '4 years, 5 months, 3 hours'는 4년, 5개월, 3시간을 나타냅니다.
날짜 또는 시간 부분이 지정되지 않은 경우 간격은 초를 나타냅니다(예: INTERVAL '2' 는 INTERVAL '2 seconds' 와 동일). 이는 날짜 산술을 수행하는 기본 시간 단위와는 다르다는 점에 유의하십시오. 자세한 내용은 날짜에 대한 간단한 산술 섹션을 참조하십시오.
지원되는 날짜 및 시간 부분의 목록은 간격에 대해 지원되는 날짜 및 시간 부분 을 참조하십시오.
참고
간격 증분 순서가 중요합니다. 나열된 순서대로 증분을 더하거나 뺍니다. 예:
INTERVAL '1 year, 1 day'는 먼저 한 해를 더하거나 뺀 다음 하루를 더하거나 뺍니다.INTERVAL '1 day, 1 year'는 먼저 하루를 더하거나 뺀 다음 한 해를 더하거나 뺍니다.
순서 차이는 윤년과 같은 달력 이벤트의 영향을 받는 계산에 영향을 줄 수 있습니다.
INTERVAL은 데이터 타입이 아닙니다(즉, 테이블 열을 데이터 타입 INTERVAL이 되도록 정의할 수 없음). 간격은 날짜, 시간 및 타임스탬프 산술에만 사용할 수 있습니다.
SQL 변수 와 함께 간격을 사용할 수는 없습니다. 예를 들어, 다음 쿼리는 오류를 반환합니다.
간격에 대해 지원되는 날짜 및 시간 부분¶
INTERVAL 키워드는 다음의 날짜 및 시간 부분을 인자로 지원합니다(대/소문자 구분 안 함).
날짜 또는 시간 부분 |
약어/변형 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
간격의 예¶
특정 날짜에 연도 간격 추가하기:
특정 시간에 3시간 18분 간격을 추가합니다.
CURRENT_TIMESTAMP 함수의 출력에 복합적 간격 추가하기:
다음은 샘플 출력입니다. 현재 타임스탬프가 다르면 출력 내용이 달라집니다.
축약된 날짜/시간 부분 표기법으로 특정 날짜에 복합적 간격 추가하기:
직원 정보 테이블을 쿼리하고 지난 2년 3개월 이내에 고용된 직원의 이름 반환하기:
t1 로 명명된 테이블에서 ts 로 명명된 TIMESTAMP 열을 필터링하고 반환된 각각의 값에 4초 추가하기:
날짜에 대한 간단한 산술¶
간격 상수를 사용하여 날짜, 시간, 타임스탬프를 더하거나 뺄 수 있을 뿐만 아니라, { + | - } integer 형식으로 DATE 값에 일수를 더하거나 뺄 수도 있으며, 여기서 integer 는 더하거나 뺄 일수를 지정합니다.
참고
TIME 및 TIMESTAMP 값은 아직 간단한 산술을 지원하지 않습니다.
날짜 산술의 예¶
특정 날짜에 1일 더하기:
특정 날짜에서 4일 빼기:
employees 로 명명된 테이블을 쿼리하고 퇴사했지만 365일 이상 근무했던 사람들의 이름 반환하기:
SELECT name FROM employees WHERE end_date > start_date + 365;