TIMESTAMP_FROM_PARTS

TIMESTAMP_FROM_PARTS

개별 숫자 구성 요소에서 타임스탬프를 만들어요. 시간대가 적용되지 않으면 이 함수를 사용하여 날짜 표현식과 시간 표현식에서 타임스탬프를 만들 수 있어요.

별칭: TIMESTAMPFROMPARTS

변형(및 별칭):

  • TIMESTAMP_LTZ_FROM_PARTS, TIMESTAMPLTZFROMPARTS
  • TIMESTAMP_NTZ_FROM_PARTS, TIMESTAMPNTZFROMPARTS
  • TIMESTAMP_TZ_FROM_PARTS, TIMESTAMPTZFROMPARTS

출처: Snowflake SQL Reference - TIMESTAMP_FROM_PARTS

본문

구문

TIMESTAMP_FROM_PARTS( year, month, day, hour, minute, second [, nanosecond ] [, time_zone ] )

TIMESTAMP_FROM_PARTS( date_expr, time_expr )
TIMESTAMP_LTZ_FROM_PARTS( year, month, day, hour, minute, second [, nanosecond] )
TIMESTAMP_NTZ_FROM_PARTS( year, month, day, hour, minute, second [, nanosecond] )

TIMESTAMP_NTZ_FROM_PARTS( date_expr, time_expr )
TIMESTAMP_TZ_FROM_PARTS( year, month, day, hour, minute, second [, nanosecond] [, time_zone] )

참고: TIMESTAMP_FROM_PARTS의 날짜·시간 표현식 버전은 TIMESTAMP_TYPE_MAPPING 세션 파라미터가 TIMESTAMP_NTZ로 설정된 경우에만 유효해요.

인자

필수:

year 타임스탬프를 만드는 데 사용할 연도로 사용되는 정수 표현식이에요.

month 타임스탬프를 만드는 데 사용할 월로 사용되는 정수 표현식이에요. 1월은 1, 12월은 12로 표시돼요.

day 타임스탬프를 만드는 데 사용할 일로 사용되는 정수 표현식이에요. 보통 1-31 범위예요.

hour 타임스탬프를 만드는 데 사용할 시로 사용되는 정수 표현식이에요. 보통 0-23 범위예요.

minute 타임스탬프를 만드는 데 사용할 분으로 사용되는 정수 표현식이에요. 보통 0-59 범위예요.

second 타임스탬프를 만드는 데 사용할 초로 사용되는 정수 표현식이에요. 보통 0-59 범위예요.

date_expr, time_expr 타임스탬프를 만드는 데 사용할 날짜와 시간 표현식을 지정해요. date_expr은 타임스탬프의 연·월·일을, time_expr은 하루 안의 시·분·초·나노초를 제공해요. 다음에만 유효해요:

  • TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING 세션 파라미터가 TIMESTAMP_NTZ로 설정된 경우)
  • TIMESTAMP_NTZ_FROM_PARTS

선택:

nanoseconds 타임스탬프를 만드는 데 사용할 나노초로 사용되는 정수 표현식이에요. 보통 0-999999999 범위예요.

time_zone 타임스탬프를 만드는 데 사용할 시간대로 사용되는 문자열 표현식이에요(예: America/Los_Angeles). 다음에만 유효해요:

  • TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING 세션 파라미터가 TIMESTAMP_TZ로 설정된 경우)
  • TIMESTAMP_TZ_FROM_PARTS

사용 시 유의사항

  • TIMESTAMP_FROM_PARTS 변형은 일반적으로 “정상” 값 범위(예: 월 1-12, 일 1-31, 시 0-23 등)의 값을 처리하는 데 사용돼요. 그러나 이 범위 밖의 값도 처리할 수 있어요. 이렇게 하면 한 해의 N번째 날이나 하루의 N번째 초를 선택할 수 있어 일부 계산을 단순화하는 데 유용할 수 있어요.
  • TIMESTAMP_FROM_PARTS는 TIMESTAMP_TYPE_MAPPING 세션 파라미터가 지정한 변형(기본값 TIMESTAMP_NTZ)과 동등해요.

예시

출력 형식과 시간대를 제어하는 세션 변수를 설정해요:

ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT=YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM;
ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT=YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM;
ALTER SESSION SET TIMEZONE=America/New_York;

TIMESTAMP_LTZ_FROM_PARTS 사용:

SELECT TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00);
+--------------------------------------------------+
| TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|--------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400              |
+--------------------------------------------------+

TIMESTAMP_NTZ_FROM_PARTS 사용:

select timestamp_ntz_from_parts(2013, 4, 5, 12, 00, 00, 987654321);
+-------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 987654321) |
|-------------------------------------------------------------|
| 2013-04-05 12:00:00.987654321                               |
+-------------------------------------------------------------+

연·월·일·시 등 대신 날짜와 시간으로 TIMESTAMP_NTZ_FROM_PARTS 사용:

select timestamp_ntz_from_parts(to_date(2013-04-05), to_time(12:00:00));
+----------------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(TO_DATE(2013-04-05), TO_TIME(12:00:00))     |
|----------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000                                        |
+----------------------------------------------------------------------+

세션 기본 시간대(‘America/New_York’/-0400)를 사용한 TIMESTAMP_TZ_FROM_PARTS:

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00);
+-------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|-------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400             |
+-------------------------------------------------+

지정된 시간대(‘America/Los_Angeles’/-0700)를 사용한 TIMESTAMP_TZ_FROM_PARTS; 나노초 인자로 0을 사용한 것에도 주목하세요:

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00, 0, America/Los_Angeles);
+---------------------------------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 0, AMERICA/LOS_ANGELES)  |
|---------------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0700                                       |
+---------------------------------------------------------------------------+

정상 범위 밖의 값 처리(-3600초를 지정해 1시간 빼기):

select timestamp_from_parts(2013, 4, 5, 12, 0, -3600);
+------------------------------------------------+
| TIMESTAMP_FROM_PARTS(2013, 4, 5, 12, 0, -3600) |
|------------------------------------------------|
| 2013-04-05 11:00:00.000000000                  |
+------------------------------------------------+

더 알아보기 (Learn more)