본문 바로가기

DB/DB2

DB2 DATE FORMAT

VARCHAR_FORMAT 스칼라 함수






문자를 varchar로

구문 도표 읽기시각적 구문 도표 생략
>>-VARCHAR_FORMAT--(--character-expression--)------------------><

varchar 시간소인:

구문 도표 읽기시각적 구문 도표 생략
>>-VARCHAR_FORMAT--(--timestamp-expression--+--------------------------------------+--)-><
                                            '-,--format-string--+----------------+-'      
                                                                '-,--locale-name-'        

varchar 10진수 부동 소수점:

구문 도표 읽기시각적 구문 도표 생략
>>-VARCHAR_FORMAT--(--decimal-floating-point-expression--+------------------+--)-><
                                                         '-,--format-string-'      

스키마는 SYSIBM입니다.

VARCHAR_FORMAT 함수는 지정된 출력 문자열 인수를(제공된 경우) 첫 번째 인수 값에 적용하여 문자열을 리턴합니다. VARCHAR_FORMAT 함수의 인수 중 하나가 널(NULL)이 될 수 있으면, 결과는 널(NULL)이 될 수 있습니다. 즉, 인수가 널(NULL)이면 결과는 널(NULL) 값입니다.

지정된 문자 템플리트에 따라 표현식을 형식화해야 합니다.

문자를 varchar로
character-expression
내장 CHAR 또는 VARCHAR 데이터 유형이어야 하는 값을 리턴하는 표현식. 유니코드 데이터베이스의 경우, 제공된 인수가 GRAPHIC 또는 VARGRAPHIC 데이터 유형이면, 함수를 평가하기 전에 먼저 VARCHAR로 변환됩니다.

결과가 인수의 길이 속성과 일치하는 길이 속성이 있는 VARCHAR입니다. 결과 값은 character-expression의 값과 동일합니다.

varchar 시간소인
timestamp-expression
DATE 또는 TIMESTAMP여야 하거나 CLOB 또는 DBCLOB가 아닌 날짜 또는 시간소인의 유효한 문자열 표현인 값을 리턴하는 표현식입니다. 인수가 문자열이면 format-string 인수를 지정해야 합니다. 유니코드 데이터베이스의 경우, 제공된 인수가 데이터, 시간 또는 시간소인의 그래픽 문자열 표현이면, 함수를 평가하기 전에 먼저 문자열로 변환됩니다.

timestamp-expression이 DATE 또는 날짜의 유효한 문자열 표현이면, 먼저 TIMESTAMP(0) 값으로 변환되며, 이 경우 정확하게 자정 시간(00.00.00)인 것으로 가정합니다.

날짜 시간 값의 유효한 문자열 표현 형식은 "날짜 시간 값"의 "날짜 시간 값 문자열 표현"을 참조하십시오.

format-string
표현식은 내장 CHAR, VARCHAR, 숫자 또는 날짜 및 시간 데이터 유형인 값을 리턴해야 합니다. 값이 CHAR 또는 VARCHAR 데이터 유형이 아닌 경우, 함수를 평가하기 전에 내재적으로 VARCHAR로 캐스트됩니다. 유니코드 데이터베이스의 경우, 제공된 인수가 GRAPHIC 또는 VARGRAPHIC 데이터 유형이면, 함수를 평가하기 전에 먼저 VARCHAR로 변환됩니다. 실제 길이는 254바이트를 넘지 않아야 합니다(SQLSTATE 22007). 값은 timestamp-expression 형식화 방법에 대한 템플리트입니다.
유효한 format-string은 아래 나열된 형식 요소 조합을 포함해야 합니다(SQLSTATE 22007). 하나 이상의 다음 구분자 문자로 두 형식 요소를 선택적으로 구분할 수 있습니다.
  • 마이너스 부호(-)
  • 마침표(.)
  • 슬래시(/)
  • 쉼표(,)
  • 어포스트로피 (')
  • 세미콜론(;)
  • 콜론(:)
  • 공백( )
또한 format-string의 시작 또는 끝에 구분자 문자를 지정할 수 있습니다.
표 1. VARCHAR_FORMAT 함수의 형식 요소
형식 요소설명
AM 또는 PM마침표가 없는 정오 표시기(아침 또는 저녁). 이 형식 요소는 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
A.M. 또는 P.M.마침표가 있는 정오 표시기(아침 또는 저녁). 이 형식 요소는 완전 문자열('A.M.' 또는 'P.M.')을 사용하며 적용되는 로케일 이름과 독립적입니다.
CC세기(01 - 99). 4자리 연도의 마지막 두 숫자가 0이면, 결과는 연도의 처음 두 숫자입니다. 그렇지 않으면, 결과는 연도의 처음 두 숫자 + 1입니다.
DAY, Day 또는 day대문자, 첫 글자만 대문자 또는 소문자 형식의 일 이름. 사용되는 언어는 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
DY, Dy 또는 dy대문자, 첫 글자만 대문자 또는 소문자 형식의 약어화된 일 이름. 사용되는 언어는 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
D요일(1 - 7). 첫 번째 요일은 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
DD월 중 일(01 - 31).
DDD연 중 일(001 - 366).
FF 또는 FFn소수 초(0 - 999999999999). 숫자 n은 리턴된 값에 포함된 수의 자리수를 지정합니다. n에 유효한 값은 선행 영(0)이 없는 1 - 12입니다. FF 지정은 FF6 지정과 동일합니다. timestamp-expression의 시간소인 정밀도의 형식으로 지정된 것보다 작으면 지정된 숫자의 오른쪽에 영(0) 숫자가 채워집니다.
HHHH는 HH12와 동일하게 동작합니다.
HH1212시간 형식의 하루 중 시각(01 - 12).
HH2424시간 형식의 하루 중 시각(00 - 24).
IWISO 연 중 주(01 - 53). 주는 월요일에 시작하고 7일을 포함합니다. 주 1은 목요일을 포함하는 연 중 첫 번째 주이며, 1월 4일을 포함하는 연 중 첫 번째 주와 같습니다.
IISO 연도(0 - 9). 리턴되는 ISO 주를 기반으로 하는 연도의 마지막 숫자.
IYISO 연도(00 - 99). 리턴되는 ISO 주를 기반으로 하는 연도의 마지막 두 숫자.
IYYISO 연도(000 - 999). 리턴되는 ISO 주를 기반으로 하는 연도의 마지막 세 숫자.
IYYYISO 연도(0000 - 9999). 리턴되는 ISO 주를 기반으로 하는 4자리 연도.
J율리우스력 일(BC 4713년 1월 1일 이후의 경과일 수).
MI분(00 - 59).
MM월(01 - 12).
NNNNNN마이크로초(000000 - 999999). FF6과 같습니다.
MONTH, Month 또는 month대문자, 첫 글자만 대문자 또는 소문자 형식의 월 이름. 사용되는 언어는 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
MON, Mon 또는 mon대문자, 첫 글자만 대문자 또는 소문자 형식의 약어화된 월 이름. 사용되는 언어는 locale-name(지정된 경우)에 종속됩니다. 그렇지 않으면, CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
Q분기(1 - 4). 1월에서 3월까지는 1을 리턴합니다.
RRRR은 YY와 동일하게 동작합니다.
RRRRRRRR은 YYYY와 동일하게 동작합니다.
SS초(00 - 59).
SSSSS지난 자정 이후의 초 수(00000 - 86400).
W월 중 주(1 - 5). 주 1은 그 달의 첫 번째 날에 시작하고 7번째 날에 끝납니다.
WW연 중 주(01 - 53). 주 1은 1월 1일에 시작하고 1월 7일에 끝납니다.
Y연도의 마지막 숫자(0 - 9).
YY연도의 마지막 두 숫자(00 - 99).
YYY연도의 마지막 세 숫자(000 - 999).
YYYY4자리 연도(0000 - 9999).
참고: 표 1의 형식 요소는 다음 경우를 제외하고 대소문자를 구분하지 않습니다.
  • AM, PM
  • A.M., P.M.
  • DAY, Day, day
  • DY, Dy, dy
  • D
  • MONTH, Month, month
  • MON, Mon, mon

형식 요소가 앰비규어스한 경우, 대소문자 비구분 형식 요소를 먼저 고려합니다. 예를 들어, DDYYYY는 D 다음에 DY가 오고 그 다음에 YYY가 오는 것으로 해석되지 않고 DD 다음에 YYYY가 오는 것으로 해석됩니다.

format-string이 지정되지 않으면, 사용되는 형식은 CURRENT LOCALE LC_TIME 특수 레지스터 값을 기반합니다.

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 특수 레지스터 값이 사용됩니다.

결과는 format-string으로 지정된 형식의 timestamp-expression 표현입니다. format-string은 하나 이상의 구분자 문자로 선택적으로 구분할 수 있는 일련의 형식 요소로 해석됩니다. format-string의 문자열은 표 1의 가장 긴 일치하는 형식 요소로 해석됩니다. 동일한 문자를 포함하는 두 형식 요소가 구분자 문자로 구분되지 않은 경우, 스펙은 왼쪽부터 시작하여 테이블에서 가장 긴 일치하는 형식 요소 스펙으로 해석되고 나머지 출력 문자열에 대해 일치를 찾을 때까지 계속됩니다. 예를 들어, 'YYYYYYDD'는 'YYYY', 'YY' 및 'DD' 형식 요소로 해석됩니다.

결과는 가변 길이 문자열입니다. 길이 속성은 254입니다. format-string은 결과의 실제 길이를 판별합니다. 결과 문자열이 결과의 길이 속성을 초과하면, 결과가 절단됩니다.

varchar 부동 소수점
decimal-floating-point-expression
임의의 내장 숫자 데이터 유형 값을 리턴하는 표현식입니다. 인수가 10진수 부동 소수점 값이 아니면, 처리를 위해 DECFLOAT(34)로 변환됩니다.
format-string
표현식은 내장 CHAR, VARCHAR, 숫자 또는 날짜 및 시간 데이터 유형인 값을 리턴해야 합니다. 값이 CHAR 또는 VARCHAR 데이터 유형이 아닌 경우, 함수를 평가하기 전에 내재적으로 VARCHAR로 캐스트됩니다. 유니코드 데이터베이스의 경우, 제공된 인수가 GRAPHIC 또는 VARGRAPHIC 데이터 유형이면, 함수를 평가하기 전에 먼저 VARCHAR로 변환됩니다. 실제 길이는 254바이트를 넘지 않아야 합니다(SQLSTATE 22018). 값은 decimal-floating-point-expression 형식화 방법에 대한 템플리트입니다. 템플리트 처음에서만 접두부로 지정된 형식 요소를 사용할 수 있습니다. 템플리트 끝에서만 접미부로 지정된 형식 요소를 사용할 수 있습니다. 형식 요소는 대소문자를 구분합니다. 템플리트는 MI, S 또는 PR 형식 요소를 두 개 이상 포함하지 않아야 합니다(SQLSTATE 22018).
표 2. VARCHAR_FORMAT 함수의 형식 요소
형식 요소설명
0각 0은 유효 숫자를 나타냅니다. 숫자에서 선행 영(0)은 영(0)으로 표시됩니다.
9각 9는 유효 숫자를 나타냅니다. 숫자에서 선행 영(0)은 공백으로 표시됩니다.
MI접미부: decimal-floating-point-expression이 음수이면, 후행 마이너스 부호(−)가 결과에 포함됩니다. decimal-floating-point-expression이 양수이면, 뒤 공백이 결과에 포함됩니다.
S접두부: decimal-floating-point-expression이 음수이면, 선행 마이너스 부호(−)가 결과에 포함됩니다. 접두부: decimal-floating-point-expression이 양수이면, 선행 플러스 부호(+)가 결과에 포함됩니다.
PR접미부: decimal-floating-point-expression이 음수이면, 선행 보다 작음 문자(<) 및 후행 보다 큼 문자(>)가 결과에 포함됩니다. decimal-floating-point-expression이 양수이면, 앞 공백과 뒤 공백이 결과에 포함됩니다.
$접두부: 선행 달러 기호($)가 결과에 포함됩니다.
,결과에서 해당 위치에 쉼표가 포함되도록 지정합니다. 이 쉼표는 그룹 구분자로 사용됩니다.
.결과에서 해당 위치에 마침표가 포함되도록 지정합니다. 이 마침표는 소수점으로 사용됩니다.

format-string이 지정되지 않으면, decimal-floating-point-expression은 SQL 10진수 부동 소수점 상수 양식으로 형식화됩니다. decimal-floating-point-expression이 음수이면, 결과의 첫 번째 문자는 마이너스 부호이고, 그렇지 않으면 첫 번째 문자는 숫자입니다. decimal-floating-point-expression이 영(0)이면, 결과가 0입니다.

결과는 decimal-floating-point-expression의 가변 길이 문자열 표현입니다. 길이 속성은 254입니다. 결과의 실제 길이는 format-string(지정된 경우)이 판별합니다. 그렇지 않으면, 결과의 실제 길이는 decimal-floating-point-expression 값을 나타낼 수 있는 가장 작은 문자 수입니다. 결과 문자열이 결과의 길이 속성을 초과하면, 결과가 절단됩니다.

decimal-floating-point-expression 값이 특수 값인 Infinity, sNaN 또는 NaN이면, 각각 "INFINITY", "SNAN" 및 "NAN" 문자열이 리턴됩니다. 특수 값이 음수이면, 결과의 첫 문자는 마이너스 부호입니다. 10진수 부동 소수점 특수 값 sNaN은 문자열로 변환될 때 예외가 발생하지 않습니다.

format-string이 형식 요소 MI, S 또는 PR을 포함하지 않고 decimal-floating-point-expression 값이 음수이면, 마이너스 부호(−)가 결과에 포함됩니다. 그렇지 않으면, 결과에 공백이 포함됩니다.

decimal-floating-point-expression의 소수점 왼쪽의 숫자 수가 format-string의 소수점 왼쪽의 숫자 수보다 크면, 결과는 번호 기호(#) 문자입니다. decimal-floating-point-expression의 소수점 오른쪽의 숫자 수가 format-string의 소수점 오른쪽의 숫자 수보다 크면, 결과는 decimal-floating-point-expression이 format-string의 소수점 오른쪽의 숫자 수로 반올림됩니다. DECFLOAT 반올림 모드가 사용되지 않습니다. VARCHAR_FORMAT의 반올림 동작은 ROUND_HALF_UP 값에 대응합니다.

결과의 코드 페이지는 섹션의 코드 페이지입니다.

참고:

  • 율리우스력 및 그레고리오력: varchar 시간소인의 경우, 이 함수에서는 1582년 10월 15일에 율리우스력에서 그레고리오력으로의 전이를 고려합니다.
  • 결정론: VARCHAR_FORMAT은 결정 함수입니다. 그러나 다음 함수 호출은 CURRENT LOCALE LC_TIME 특수 레지스터 값에 종속됩니다.
    • varchar 시간소인(format-string이 명시적으로 지정되지 않거나 locale-name이 명시적으로 지정되지 않고 다음 중 하나가 참인 경우)
      • format-string이 상수가 아님
      • format-string이 상수이고 로케일 구분 형식 요소를 포함
      특수 레지스터를 사용할 수 없는 경우에는 특수 레지스터 값에 종속된 이러한 호출을 사용할 수 없습니다(SQLSTATE 42621 또는 428EC).
  • 구문 대체: TO_CHAR은 VARCHAR_FORMAT의 동의어입니다.

  • 이름이 'SYSU'로 시작하는 모든 시스템 테이블에 대한 테이블 이름 및 작성시간소인을 표시하십시오.
       SELECT VARCHAR(TABNAME, 20) AS TABLE_NAME,
         VARCHAR_FORMAT(CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS')
           AS CREATION_TIME
         FROM SYSCAT.TABLES
         WHERE TABNAME LIKE 'SYSU%'
    이 예에서는 다음을 리턴합니다.
          TABLE_NAME           CREATION_TIME
       -------------------- -------------------
          SYSUSERAUTH          2000-05-19 08:18:56
          SYSUSEROPTIONS       2000-05-19 08:18:56
  • TMSTAMP 변수가 TIMESTAMP로 정의되고 2007-03-09-14.07.38.123456 값을 갖는다고 가정하십시오. 다음 예는 함수의 여러 호출 및 결과로 발생되는 문자열 값을 나타냅니다. 각 경우의 결과 데이터 유형은 VARCHAR(254)입니다.
    Function invocation                          Result
    -------------------                          ------
    VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMISSFF3')  20070309020738123
    VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHH24MISS')   20070309140738
    VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMI')       200703090207
    VARCHAR_FORMAT(TMSTAMP,'DD/MM/YY')           09/03/07
    VARCHAR_FORMAT(TMSTAMP,'MM-DD-YYYY')         03-09-2007
    VARCHAR_FORMAT(TMSTAMP,'J')                  2454169
    VARCHAR_FORMAT(TMSTAMP,'Q')                  1
    VARCHAR_FORMAT(TMSTAMP,'W')                  2
    VARCHAR_FORMAT(TMSTAMP,'IW')                 10
    VARCHAR_FORMAT(TMSTAMP,'WW')                 10
    VARCHAR_FORMAT(TMSTAMP,'Month','en_US')      March 
    VARCHAR_FORMAT(TMSTAMP,'MONTH','en_US')      MARCH 
    VARCHAR_FORMAT(TMSTAMP,'MON','en_US')        MAR 
    VARCHAR_FORMAT(TMSTAMP,'Day','en_US')        Friday 
    VARCHAR_FORMAT(TMSTAMP,'DAY','en_US')        FRIDAY 
    VARCHAR_FORMAT(TMSTAMP,'Dy','en_US')         Fri 
    VARCHAR_FORMAT(TMSTAMP,'Month','de_DE')      März 
    VARCHAR_FORMAT(TMSTAMP,'MONTH','de_DE')      MÄRZ 
    VARCHAR_FORMAT(TMSTAMP,'MON','de_DE')        MRZ 
    VARCHAR_FORMAT(TMSTAMP,'Day','de_DE')        Freitag 
    VARCHAR_FORMAT(TMSTAMP,'DAY','de_DE')        FREITAG 
    VARCHAR_FORMAT(TMSTAMP,'Dy','de_DE')         Fr
  • DTE 변수가 DATE로 정의되고 2007-03-09 값을 갖는다고 가정하십시오. 다음 예는 몇 개의 함수 호출과 결과 문자열 값을 표시합니다. 각 경우의 결과 데이터 유형은 VARCHAR(254)입니다.
    Function invocation                          Result
    -------------------                          ------
    VARCHAR_FORMAT(DTE,'YYYYMMDD')               20070309
    VARCHAR_FORMAT(DTE,'YYYYMMDDHH24MISS')       20070309000000
  • POSNUM 및 NEGNUM 변수가 DECFLOAT(34)로 정의되고 각각 1234.56과 -1234.56 값을 갖는다고 가정하십시오. 다음 예는 몇 개의 함수 호출과 결과 문자열 값을 표시합니다. 각 경우의 결과 데이터 유형은 VARCHAR(254)입니다.
    Function invocation                          Result
    -------------------                          ------
    VARCHAR_FORMAT(POSNUM)                       '1234.56'
    VARCHAR_FORMAT(NEGNUM)                       '-1234.56'
    VARCHAR_FORMAT(POSNUM,'9999.99')             '1234.56'
    VARCHAR_FORMAT(NEGNUM,'9999.99')             '1234.56'
    VARCHAR_FORMAT(POSNUM,'99999.99')            ' 1234.56'
    VARCHAR_FORMAT(NEGNUM,'99999.99')            ' 1234.56'
    VARCHAR_FORMAT(POSNUM,'00000.00')            '01234.56'
    VARCHAR_FORMAT(NEGNUM,'00000.00')            '01234.56'
    VARCHAR_FORMAT(POSNUM,'9999.99MI')           '1234.56 '
    VARCHAR_FORMAT(NEGNUM,'9999.99MI')           '1234.56-'
    VARCHAR_FORMAT(POSNUM,'S9999.99')            '+1234.56'
    VARCHAR_FORMAT(NEGNUM,'S9999.99')            '-1234.56'
    VARCHAR_FORMAT(POSNUM,'9999.99PR')           ' 1234.56 '
    VARCHAR_FORMAT(NEGNUM,'9999.99PR')           '<1234.56>'
    VARCHAR_FORMAT(POSNUM,'S$9,999.99')          '+$1,234.56'
    VARCHAR_FORMAT(NEGNUM,'S$9,999.99')          '-$1,234.56'


'DB > DB2' 카테고리의 다른 글

DB2 함수 모음  (0) 2014.03.05
DB2 SQL error codes  (0) 2014.02.26
DB2 Data Type Java Mapping  (0) 2014.02.26