TIMESTAMP_FORMAT 스칼라 함수

TIMESTAMP_FORMAT 함수는 지정된 형식을 사용하여 입력 문자열의 해석을 기반으로 하는 시간소인을 리턴합니다.

Read syntax diagramSkip visual syntax diagramTIMESTAMP_FORMAT(string-expression ,format-string,6,precision-constant,locale-name,locale-name,6,precision-constant )

스키마는 SYSIBM입니다.

문자열 표현식
표현식은 내장 CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 제공된 인수가 GRAPHIC 또는 VARGRAPHIC 데이터 유형인 경우, 함수를 평가하기 전에 먼저 VARCHAR로 변환됩니다. string-expression에는 format-string에서 지정한 형식에 해당하는 시간소인의 구성요소가 포함되어야 합니다.
format-string
표현식은 내장 CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 제공된 인수가 GRAPHIC 또는 VARGRAPHIC 데이터 유형인 경우, 함수를 평가하기 전에 먼저 VARCHAR로 변환됩니다. 실제 길이는 255바이트 이하여야 합니다(SQLSTATE 22007). 값은 string-expression이 해석되고 시간소인 값으로 변환되는 방법에 대한 템플리트입니다.
유효한 format-string 은 최소한 하나의 형식 요소를 포함해야 하고, 시간소인의 구성요소에 대한 다중 스펙을 포함하지 않아야 하며, 표 1 에서 달리 명시하지 않는 한 형식 요소의 조합을 포함할 수 있습니다 (SQLSTATE 22007). 예를 들어, format-stringstring-expression의 연도 구성요소를 해석하기 위해 사용되므로 YY 및 YYYY 모두가 포함될 수 없습니다. 함께 지정될 수 없는 출력 요소를 판별하려면 테이블을 참조하십시오. 두 개의 형식 요소는 다음 구분자 중 하나 이상에 의해 선택적으로 구별될 수 있습니다.
  • 마이너스 부호 (-)
  • 마침표(.)
  • 슬래시(/)
  • 쉼표(,)
  • 아포스트로피(')
  • 세미콜론(;)
  • 콜론(:)
  • 공백( )
구분자는 format-string의 시작 또는 끝에 지정됩니다. 이러한 구분자는 출력 문자열의 조합에 사용될 수 있습니다(예: 'YYYY/MM-DD HH:MM.SS'). string-expression 에 지정된 구분 기호 문자는 구성요소를 구분하는 데 사용되며 format-string에 지정된 구분 기호 문자와 일치하지 않아도 됩니다.
표 1. TIMESTAMP_FORMAT 함수에 대한 형식 요소
형식 요소 시간소인의 관련 구성요소 설명
AM 또는 PM 시간 마침표 없는 자오선 표시기(오전 또는 오후)입니다. 지정되는 경우, 이 형식 요소는 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
A.M. 또는 P.M. 시간 마침표가 있는 자오선 표시기(오전 또는 오후)입니다. 이 형식 요소는 완전 문자열(A.M. 또는 P.M.)을 사용하며 적용되는 로케일 이름과 독립적입니다.
DAY, Day 또는 day 없음 대문자, titlecase 또는 소문자 형식의 날짜 이름입니다. 지정되는 경우, 사용된 언어는 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
DY, Dy 또는 dy 없음 대문자, titlecase 또는 소문자 형식의 날짜 이름의 약어입니다. 지정되는 경우, 사용된 언어는 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
D 없음 요일(1-7)입니다. 지정되는 경우, 첫 번째 요일은 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
DD 월의 날짜(01-31)입니다.
DDD month, day 일(001-366).
FF 또는 FFn 소수 정밀 단위 초(0-999999999999). 숫자 nstring-expression에서 예상되는 자리 수를 지정하기 위해 사용됩니다. n에 대한 유효한 값은 선두에 0이 없는 1-12입니다. FF를 지정하는 것은 FF6을 지정하는 것과 동일합니다. FF 형식 요소와 일치하는 string-expression의 구성요소는 구분자가 뒤에 오거나 마지막 구성요소일 때, 정밀 단위 초에 대한 자리 수가 형식 요소에 의해 지정되는 것 보다 적을 수 있습니다. 이 경우, 0 숫자는 지정된 숫자의 오른쪽을 채웁니다.
HH 시간 HH는 HH12와 동일하게 작동합니다.
HH12 시간 12시간 형식의 하루의 시간(01-12)입니다. AM은 기본 자오선 표시기입니다.
HH24 시간 24시간 형식의 하루 시간(00-24)입니다.
J 연, 월 및 일 율리우스력 일(BC 4713년 1월 1일 이후의 날짜 수)입니다.
MI 분(00-59).
MM 개월 월(01-12).
MONTH, Month 또는 month 개월 대문자, titlecase 또는 소문자 형식의 월 이름입니다. 지정되는 경우, 사용된 언어는 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
MON, Mon 또는 mon 개월 대문자, titlecase 또는 소문자 형식의 월 이름의 약어입니다. 지정되는 경우, 사용된 언어는 locale-name에 따라 다릅니다. 그렇지 않으면, 이는 특수 레지스터 CURRENT LOCALE LC_TIME 값에 따라 다릅니다.
NNNNNN 마이크로초 마이크로초(000000-999999). FF6과 동일합니다.
RR year 조정된 연도의 마지막 두 자리 숫자입니다(00-99).
RRRR year 네 자리 조정된 연도(0000-9999)입니다.
SS 초(00-59)입니다.
SSSSS 시, 분 및 초 이전 자정 이후의 초입니다(00000-86400).
Y year 연도의 마지막 숫자(0-9)입니다. 현재 연도의 처음 세 개의 숫자는 전체 네 자리 연도를 판별하기 위해 사용됩니다.
YY year 연도의 마지막 두 자리 숫자입니다(00-99). 현재 연도의 처음 두 개의 숫자는 전체 네 자리 연도를 판별하기 위해 사용됩니다.
YYY year 연도의 마지막 세 자리 숫자입니다(000-999). 현재 연도의 처음 숫자는 전체 네 자리 연도를 판별하기 위해 사용됩니다.
YYYY year 네 자리 숫자 연도(0000-9999)입니다.
참고: 표 1 의 형식 요소는 다음을 제외하고 대소문자를 구분하지 않습니다.
  • AM, PM
  • A.M., P.M.
  • DAY, Day, day
  • DY, Dy, dy
  • D
  • MONTH, Month, month
  • MON, Mon, mon

DAY, Day, day, DY, Dy, dy, D 형식 요소는 결과 시간소인의 구성요소에 기여하지 않습니다. 그러나, 이러한 형식 요소 중 임의의 것에 대대 지정된 값은 결과 시간소인의 연도, 월 및 일 구성요소의 조합에 알맞아야 합니다(SQLSTATE 22007). 예를 들어, 'en_US'의 값이 locale-name에 사용된다고 가정하면 string-expression에 대한 'Monday 2008-10-06' 값은 'Day YYYY-MM-DD' 값에 대해 유효합니다. 그러나 string-expression에 대한 'Tuesday 2008-10-06' 값은 동일한 format-string에 대한 오류를 가져옵니다.

RR 및 RRRR 형식 요소는 다음 테이블에 따른 현재 연도의 가장 왼쪽 두 자리 숫자에 따라 네 자리 숫자 값 또는 두 자리 숫자 값을 생성하기 위한 값을 조정하여 연도에 대한 스펙 해석 방법을 변경하기 위해 사용될 수 있습니다.

현재 연도의 마지막 두 자리 숫자 string-expression의 두 자리 숫자 연도 시간소인의 연도 구성요소의 첫 두 자리 숫자
00-50 00-49 현재 연도의 처음 두 자리 숫자
51-99 00-49 현재 연도 + 1의 처음 두 자리 숫자
00-50 50-99 현재 연도 - 1의 처음 두 자리 숫자
51-99 50-99 현재 연도의 처음 두 자리 숫자
예를 들어, 현재 연도가 2007인 경우, 'RR' 형식을 가지는 '86'은 1986을 의미하지만, 현재 연도가 2052인 경우 이는 2086을 의미합니다.
다음 기본값은 format-string에 시간소인의 다음 구성요소 중 하나에 대한 형식 요소가 포함되지 않을 때 사용됩니다.
시간소인 구성요소 기본값
네 자리 숫자로 현재 연도
2자리 숫자로 현재 월
01(월의 첫 번째 일)
시간 00
00
00
정밀 단위 초 결과의 시간소인 정밀도와 일치하는 0의 수
format-string에 해당 형식 요소에 대한 유효 숫자의 최대 수가 없는 시간소인 값의 구성요소(즉, 월, 일, 시, 분, 초)에 선두 0이 지정될 수 있습니다.

시간소인의 구성요소(예: 연도, 월, 일, 시, 분, 초)를 나타내는 string-expression의 서브스트링에는 해당 형식 요소에 의해 표시되는 시간소인의 해당 구성요소에 대한 최대 자리수 미만이 포함될 수 있습니다. 누락된 숫자는 0으로 기본값이 지정됩니다. 예를 들어, 'YYYY-MM-DD HH24:MI:SS'의 format-string로 '999-3-9 5:7:2'의 입력 값이 '0999-03-09 05:07:02'와 동일한 결과를 생산합니다.

format-string이 지정되지 않은 경우, string-expression은 특수 레지스터 CURRENT LOCALE LC_TIME의 값을 기반으로 기본 형식을 사용하여 해석됩니다.

정밀도 상수 (precision-constant)
결과의 시간소인 정밀도를 지정하는 정수 상수입니다. 값의 범위느 0 - 12로 지정되어야 합니다. 지정되지 않으면 시간소인 정밀도의 기본값이 6으로 지정됩니다.
locale-name
다음 형식 요소에 사용되는 로케일을 지정하는 문자 상수입니다.
  • AM, PM
  • DAY, Day, day
  • DY, Dy, dy
  • D
  • MONTH, Month, month
  • MON, Mon, mon
locale-name의 값은 대소문자를 구분하지 않고 유효한 로케일이어야 합니다(SQLSTATE 42815).

유효한 로케일 및 해당 이름 지정에 대한 정보는 SQL및 XQuery의 로케일 이름을 참조하십시오.

locale-name이 지정되지 않으면 특수 레지스터 CURRENT LOCALE LC_TIME의 값이 사용됩니다.

함수의 결과는 precision-constant을 기반으로 하는 정밀도를 가지는 TIMESTAMP입니다. 처음 두 개의 인수 중 하나가 널(NULL)일 수 있는 경우, 결과는 널(NULL)일 수 있습니다. 처음 두 개의 인수가 널(NULL) 중 하나인 경우, 결과는 널(NULL) 값입니다.

참고

  • 율리우스력 및 그레고리우스력 달력: 1582년 10월 15일의 율리우스력 달력에서 그레고리우스력 달력으로 변환하는 것이 이 함수에 의해 설명됩니다.
  • 결정론: TIMESTAMP_FORMAT은 결정 함수입니다. 그러나, 함수의 다음 호출은 특수 레지스터 CURRENT LOCALE LC_TIME 또는 CURRENT TIMESTAMP의 값에 따라 다릅니다.
    • format-string이 명시적으로 지정되지 않거나 locale-name이 명시적으로 지정되지 않을 때 다음 중 하나는 true입니다.
      • format-string은 상수가 아님
      • format-string은 상수이고 로케일 구분인 출력 요소가 포함됩니다.
      • format-string은 상수이고 연도를 완전하게 정의하는 형식 요소(즉, J 또는 YYYY)를 포함하지 않습니다. 따라서 현재 연도의 값을 사용합니다.
      • format-string은 상수이고 월을 완전하게 정의하는 형식 요소(즉, J, MM, MONTH, 또는 MON)를 포함하지 않습니다. 따라서 현재 월의 값을 사용합니다.
    특수 레지스터의 값에 의존하는 이러한 호출은 특수 레지스터를 사용할 수 없는 경우에는 사용할 수 없습니다 (SQLSTATE 42621, 428EC또는 429BX).
  • 구문 대체: TO_DATE는 TIMESTAMP_FORMAT의 동의어입니다. TO_TIMESTAMP는 유사한 함수이며 유일한 차이는 precision-constant의 기본값이 12라는 것입니다.

예:

  • 예제 1: 2000년으로 시작하기 전 1초전과 동일한 수신 시간소인(1999년 12월 31일 23:59:59)을 갖는 IN_TRAY 테이블로 행을 삽입하십시오.
       INSERT INTO IN_TRAY (RECEIVED)
         VALUES (TIMESTAMP_FORMAT('1999-12-31 23:59:59',
           'YYYY-MM-DD HH24:MI:SS'))
  • 예제 2: 애플리케이션은 INDATEVAR라는 변수로 데이터 정보의 문자열을 수신합니다. 이 값은 분명하게 형식화되지 않고 연도에 대한 두 자리 또는 네 자리 숫자, 월 및 일에 대한 하낭 이상의 숫자를 포함할 수도 있습니다. 날짜 구성요소는 minus sign(-) 또는 슬래시(/) 문자로 구별될 수 있고 일, 월 및 연도 순으로 예상됩니다. 시간 정보는 시간(24시간 형식) 및 분으로 구성되고 일반적으로 콜론으로 구별됩니다. 샘플 값에는 '15/12/98 13:48' 및 '9-3-2004 8:02'가 포함됩니다. 다음 값을 IN_TRAY 테이블에 삽입하십시오.
       INSERT INTO IN_TRAY (RECEIVED)
         VALUES (TIMESTAMP_FORMAT(:INDATEVAR,
           'DD/MM/RRRR HH24:MI'))
    형식에서 RRRR을 사용하면 2- 및 4-자리 연도 값에 대해 허용하고 현재 연도를 기반으로 누락된 처음 두 개의 자리를 지정합니다. YYYY가 사용되면, 2자리 연도를 갖는 입력 값에는 선행 영(0)이 있습니다. 이 슬래시 구분 기호는 마이너스 부호 문자를 허용합니다. 현재 연도를 2007이라고 가정하면 샘플 값의 결과 시간소인은 다음과 같습니다.
       '15/12/98 13:48' --> 1998-12-15-13.48.00.000000
       '9-3-2004 8:02'	 --> 2004-03-09-08.02.00.000000