본문 바로가기

[오라클 레퍼런스 함수] TO_UTC_TIMESTAMP_TZ - ISO 8601 날짜 형식 문자열을 TIMESTAMP WITH TIMEZONE의 인스턴스로 반환

by ㅇㅍㅍ 2023. 9. 1.
[오라클 레퍼런스 함수] TO_UTC_TIMESTAMP_TZ - ISO 8601 날짜 형식 문자열을 TIMESTAMP WITH TIMEZONE의 인스턴스로 반환
728x90

 

 

 

TO_UTC_TIMESTAMP_TZ

 

구문

TO_UTC_TIMESTAMP_TZ ( varchar )

 

목적

SQL 함수 TO_UTC_TIMESTAMP_TZvarchar 입력으로 ISO 8601 날짜 형식 문자열을 받아들이고 SQL 데이터 유형 TIMESTAMP WITH TIMEZONE의 인스턴스를 반환합니다. 이 함수는 입력을 협정 세계 표준시 (이전에는 그리니치 평균시)인 UTC(협정 세계 표준시) 시간으로 정규화합니다. SQL 함수 TO_TIMESTAMP_TZ와 달리, 이 새로운 함수는 입력 문자열이 ISO 8601 날짜 형식을 사용한다고 가정하며, 기본적으로 시간대를 UTC 0으로 설정합니다.

이 함수의 전형적인 사용 사례는 출력을 SQL 함수 SYS_EXTRACT_UTC에 제공하여 UTC 시간을 얻은 다음, SQL/JSON 조건 JSON_EXISTS에 SQL 바인드 변수로 전달하여 타임 스탬프 범위 비교를 수행하는 것입니다.

날짜 및 시간에 대한 허용되는 구문은 다음과 같습니다:

  • 날짜 (날짜만): YYYY-MM-DD
  • 시간이 포함된 날짜: YYYY-MM-DDThh:mm:ss[.s[s[s[s[s[s]]]]][Z|(+|-)hh:mm]

여기서:

  • YYYY는 네 자리 십진수로 연도(year)를 지정합니다.
  • MM은 두 자리 십진수로 월(month)을 지정합니다 (00에서 12까지).
  • DD는 두 자리 십진수로 일(day)을 지정합니다 (00에서 31까지).
  • hh는 두 자리 십진수로 시간(hour)을 지정합니다 (00에서 23까지).
  • mm은 두 자리 십진수로 분(minutes)을 지정합니다 (00에서 59까지).
  • ss[.s[s[s[s[s]]]]]는 초를 나타냅니다. 이 초는 두 자리 십진수로 00에서 59까지 지정할 수 있으며, 선택적으로 소수점과 1에서 6자리의 십진수를 뒤따릅니다 (초의 소수 부분을 나타냄).
  • Z는 UTC 시간을 지정합니다 (시간대 0). (그러나 +00:00으로 지정할 수도 있지만 –00:00으로는 지정할 수 없음).
  • (+|-)hh:mmUTC와의 차이로 시간대를 지정합니다. (한쪽은 + 또는 - 중 하나가 필요합니다).

시간 값의 경우, 시간대 부분은 선택 사항입니다. 시간대가 없으면 UTC 시간으로 가정됩니다.

다른 ISO 8601 날짜-시간 구문은 지원되지 않습니다. 특히:

  • 음수 연도 (BCE 이전의 연도)를 나타내는 음수 기호 (예: –2018–10–26T21:32:52)는 지원되지 않습니다.
  • 하이픈과 콜론 구분 기호가 필요합니다. "기본" 형식이라고 하는 YYYYMMDDThhmmss 형식은 지원되지 않습니다.
  • 서수(Ordinal) 날짜 (연도에 일 수 추가, 달력 주에 일 수 추가)는 지원되지 않습니다.
  • 연도에 네 자리 이상의 숫자를 사용하는 것은 지원되지 않습니다.

지원되는 날짜와 시간은 다음과 같습니다:

  • 2018–10–26T21:32:52
  • 2018-10-26T21:32:52+02:00
  • 2018-10-26T19:32:52Z
  • 2018-10-26T19:32:52+00:00
  • 2018-10-26T21:32:52.12679

지원되지 않는 날짜와 시간은 다음과 같습니다:

  • 2018-10-26T21:32 (시간이 지정된 경우 모든 부분이 있어야 합니다).
  • 2018-10-26T25:32:52+02:00 (시간 부분인 25는 범위를 벗어납니다).
  • 18-10-26T21:32 (연도가 완전히 지정되지 않았습니다).

 

예제

SELECT TO_UTC_TIMESTAMP_TZ('1998-01-01') FROM DUAL;

TO_UTC_TIMESTAMP_TZ('1998-01-01')
---------------------------------------------------------------------------
01-JAN-98 12.00.00.000000000 AM +00:00

 

SELECT TO_UTC_TIMESTAMP_TZ('2000-01-02T12:34:56.789') FROM DUAL;

TO_UTC_TIMESTAMP_TZ('2000-01-02T12:34:56.789')
---------------------------------------------------------------------------
02-JAN-00 12.34.56.789000000 PM +00:00

 

 

SELECT TO_UTC_TIMESTAMP_TZ('2016-05-05T00:00:00.000Z') FROM DUAL;

TO_UTC_TIMESTAMP_TZ('2016-05-05T00:00:00.000Z')
---------------------------------------------------------------------------
05-MAY-16 12.00.00.000000000 AM +00:00

 

SELECT TO_UTC_TIMESTAMP_TZ('2016-05-05T02:04:35.4678Z') FROM DUAL;

TO_UTC_TIMESTAMP_TZ('2016-05-05T02:04:35.4678Z')
---------------------------------------------------------------------------
05-MAY-16 02.04.35.467800000 AM +00:00

 

참고:

 


출처: 오라클 레퍼런스

원문 링크: Oracle TO_UTC_TIMESTAMP_TZ 함수 문서

 

반응형

댓글