형식 문자열
NUMBER 타입과 날짜형 타입의 값을 문자열로 변환하기 위한 형식을 정의한 Tibero 형식 문자열을 안내합니다.
형식 문자열이란 NUMBER 타입과 날짜형 타입의 값을 문자열로 변환하기 위한 형식을 정의한 것 입니다.
형식 문자열은 문자열 타입으로 변환된 NUMBER 타입과 날짜형 타입의 값을 다시 원래의 타입의 값으로 변환 시 필요합니다.
문자열 타입과 날짜형 타입, NUMBER 타입의 값 사이에는 데이터 타입의 변환을 할 수 있지만 실제 값에 따라 변환이 불가능한 경우도 있습니다. 예를 들어 문자열 '12345'는 NUMBER 타입의 값으로 변환할 수 있지만, 문자열 'ABCDE'는 변환할 수 없습니다.
디폴트 시간 형식으로 되어 있지 않은 문자열이나 숫자 이외의 문자를 포함하는 문자열은 각각 날짜형 또는 NUMBER 타입의 값으로 변환할 수 없습니다. 이러한 경우 반드시 TO_DATE, TO_NUMBER 등의 변환 함수를 사용해야 합니다.
형식 문자열은 TO_CHAR, TO_DATE, TO_NUMBER 함수의 파라미터로 사용됩니다. 만약 함수 파라미터로 형식 문자열이 주어지지 않으면, 디폴트 형식을 사용하여 변환합니다.
NUMBER 타입
NUMBER 타입의 형식 문자열은 TO_CHAR 함수와 TO_NUMBER 함수에서 파라미터로 사용할 수 있습니다.
TO_CHAR
NUMBER 타입의 값을 문자열로 변환
TO_NUMBER
문자열을 NUMBER 타입의 값으로 변환
특징
여러 가지 형식 요소로 구성됩니다. 소수점 위아래의 자릿수, 음양 부호의 출력, 콤마(,) 또는 지수 형식 등을 출력할 수 있습니다.
화폐 단위를 나타내는 기호($, W 등)를 삽입할 수 있습니다.
16진수로 출력할 수 있습니다.
별도의 문자열을 삽입할 수 없습니다.
대소문자를 구분하는 형식 요소가 없습니다.
형식 요소
아래는 NUMBER 타입의 형식 문자열에 포함될 수 있는 형식 요소 입니다.
콤마 (,)
9,999
해당 위치에 콤마(,) 기재
콤마를 여러 개 기재가능
콤마로 형식 문자열 시작불가
점 (.)
99.99
소수점을 출력
형식 문자열 내에서는 하나의 소수점만 존재
$
$9999
숫자의 시작에 달러 문자($)를 출력
0
0999 9990
숫자의 앞이나 뒤에 0 기재
해당되는 위치에 0 기재 가능한 경우에만 0이 출력되는 것을 보장
9
9999
(자릿수 + 1)개의 문자를 사용해서 숫자를 출력
플러스(+)나 마이너스(-) 추가 가능 (양수일 때는 공백, 음수일 때는 마이너스가 출력)
숫자의 앞쪽에 올 수 있는 0은 미출력하 (소수점 없이 정수만을 출력할 때 정수 부분이 0일 경우는 0을 출력)
B
B9999
0의 값을 공백으로 출력
D
99D99
해당 위치에 소수점을 출력 현재는 점(.)과 동일한 기능
EEEE
9.9EEEE
과학적 기수법에 의해 출력
G
9G999
해당 위치에 콤마(,) 기재 현재는 콤마와 동일한 기능
L 또는 U
L9999 U9999
숫자의 시작에 달러 문자($)를 출력 현재는 $와 동일한 기능
MI
9999MI
음수에 대해 마이너스를 뒤에 기재 양수의 경우 공백을 출력 형식 문자열의 맨 뒤에만 사용 가능
RN (rn)
RN
rn
로마 숫자로 출력
RN은 대문자로, rn은 소문자로 출력
숫자는 1~ 3,999 사이의 정수만 가능
S
S9999 9999S
양수/음수 부호를 해당 위치에 출력 형식 문자열의 맨 처음 또 는 맨 끝에서만 사용 가능
TM
TM
가장 작은 수의 문자를 사용해서 숫자를 표현
TM9와 TMe의 형태로 사용 가능
TM9는 TM과 동일
TM9는 과학적 기수법이 아닌 고정 소수점으로 숫자를 출력
TMe는 과학적 기수법으로 출력
TM은 다른 형식 요소와 함께 사용불가
아래는 TO_NUMBER 함수를 사용했을 때 각 NUMBER 타입의 값이 형식 문자열에 따라 어떻게 출력되는지를 보여줍니다.
0
99.99
'.00'
0.1
99.99
'.10'
-0.1
99.99
'-.10'
0
90.99
'0.00'
0.1
90.99
' 0.10'
-0.1
90.99
' -0.10'
0
9999
' 0'
1
9999
' 1'
0.1
9999
' 0'
-0.1
9999
' -0'
123.456
999.999
' 123.456'
-123.456
999.999
'-123.456'
123.456
FM999.999
'123.456'
123.45
999.009
' 123.450'
123.45
FM999.009
'123.45'
123
FM999.009
'123.00'
12345
99999S
'12345+'
날짜형 타입
날짜형 타입의 형식 문자열은 TO_CHAR 함수, TO_DATE 함수, TO_TIMESTAMP 함수, TO_TIMES TAMP_TZ 함수에서 파라미터로 사용할 수 있습니다.
TO_CHAR
날짜형 타입의 값을 문자열로 변환
TO_DATE
문자열을 날짜형 타입의 값으로 변환
TO_TIMESTAMP
문자열을 날짜/시간형 타입의 값으로 변환
TO_TIMESTAMP_TZ
문자열을 시간대를 포함하는 날짜/시간형 타입의 값으로 변환
특징
● 여러 가지 형식 요소로 구성됩니다. 날짜형 타입에 포함된 '연, 월, 일, 시, 분, 초' 등의 값을 각각 어떤 형식 으로 출력할 것인지 지정합니다. (예: 연도를 나타내는 형식 요소 문자열인 'YYYY'와 'YY'의 경우, 연도의 마지막 네 자리 또는 두 자리만 출력, 2009년의 경우 각각 '2009'와 '09'를 출력)
● 하이픈(-) 또는 슬래시(/)를 삽입할 수 있습니다. 만약 형식 문자열 내에 형식 요소 이외의 문자열을 삽입하고 싶다면 큰따옴표(" ")를 이용합니다.
● 대소문자를 구분하는 형식 요소가 있습니다. (예: 요일을 출력하기 위한 형식 요소인 'DAY'는 요일 문자열 전체를 대문자로, 'Day'는 맨 앞 글자만 대문자로, 'day'는 전체를 소문자로 출력, 월요일의 경우 각각 'MONDAY', 'Monday', 'monday'로 출력)
형식 요소
아래는 날짜형 타입의 형식 문자열에 포함될 수 있는 형식 요소 입니다.
-
,
.
;
:
/ "text"
-
결과 값에 해당하는 위치에 그대로 출력
AD A.D. BC
B.C.
예
서기 또는 기원 전을 표시
AM A.M. PM
P.M.
오전 또는 오후를 표시
CC SCC
아니오
세기를 출력 (예: 2005년일 때는 21을 반환) SCC는 기원전일 경우 마이너스(-)를 기재
D
아니오
1주일 중 몇 번째 날인지 출력 (1-7)
DAY
아니오
요일을 출력 (예: THURSDAY)
DD
예
1개월 중 몇 번째 날인지 출력 (1-31)
DDD
예
1년 중 몇 번째 날인지 출력 (1-366)
DY
아니오
축약 표기한 요일을 출력 (예: THU)
FF[1~9]
예
소수점 이하 자리의 초 FF 뒤에 명시한 숫자(1~9) 만큼 소수점 이하 자릿수가 출력 명시하지 않으면 데이터 타입의 디폴트 정밀도를 따름
FM
예
앞뒤 공백을 제거하고 출력하도록 하는 형식 조절자
FX
예
형식 문자열과 입력 문자열의 일치여부를 검사하는 형식 조절자
HH HH12
예
시간을 출력 (1-12)
HH24
예
시간을 출력 (0-23)
IYYYY IYYY IYY
IY
아니오
4(3/2/1)자릿수 연도 표기를 ISO 표준에 의거 출력
MI
예
분을 출력 (0-59)
MM
예
달을 출력 (1-12)
MON
예
축약된 달 이름을 출력 (예: DEC)
MONTH
예
달을 출력 (예: DECEMBER)
Q
아니오
분기를 출력 (1-4)
RM
예
달을 로마 숫자로 출력 (I-XII)
RR
예
두 자릿수의 연도의 입력 값에 따라 몇 세기인지 자동으로 조절
RRRR
예
반올림한 연도를 표기 4자리 또는 2자리를 입력받음 2자리로 입력했을 경우는 RR과 똑같이 동작
SS
예
초를 출력 (0-59)
SSSSS
예
자정을 기준으로 현재 몇 초인지 출력 (0-86399)
WW
아니오
1년 중 몇 번째 주인지 출력 (1-53)
첫 번째 주는 1월 1일에 시작하고 1월 7일에 종료
W
아니오
1개월 중 몇 번째 주인지 출력 (1-5)
첫 번째 주는 그 달 1일에 시작하고 그 달 7일에 종료
X
예
점(.)을 출력 TIMESTAMP를 출력하는 경우 소수점 자릿수를 표현하기 위해서 사용
YEAR SYEAR
아니오
숫자로 된 연도를 단어로 풀어서 기재 SYEAR는 기원전 연도에 마이너스(-) 추가
YYYY SYYYY
아니오
4자릿수 연도를 표기 SYYYY는 기원전 연도에 마이너스(-) 추가
YYY YY Y
예
3(2/1)자릿수 연도를 출력
TZH
예
시간대에서의 시간을 출력
TZM
예
시간대에서의 분을 출력
TZR
예
시간대에서의 지역을 출력
TZD
예
시간대에서의 일광 절약시간 약어를 출 (이 값은 반드시 TZR에서의 지역과 일치 필요)
EE
예
연호를 출력 (Japanese Imperial and Thai Buddha calendars)
E
예
연호의 약어를 출력 (Japanese Imperial and Thai Buddha calen dars)
J
예
Julian Day를 출력 (J: 기원전 4712년 1월 1일부터 계수한 값, 음이 아닌 정수)
위의 표에서의 RR 형식 요소는 YY 형식 요소와 유사하나, 다른 세기의 연도 값을 더 간편하게 명시하고 저장할 수 있습니다.
RR 형식 요소의 정확한 규칙
● 현재 연도의 마지막 두 자리가 00 ~ 49 사이일 경우
– 명시한 두 자릿수 연도가 00 ~ 49 사이일 경우 반환되는 연도는 현재 연도와 앞의 두 자리가 동일 – 명시한 두 자릿수 연도가 50 ~ 99 사이일 경우 반환되는 연도의 앞의 두 자리는 현재 연도의 앞의 두 자리에 1을 뺀 값과 동일
아래는 2000~2049년에 수행했음을 가정했을 때의 예시 입니다.
SQL> SELECT TO_CHAR(TO_DATE('20/08/13', 'RR/MM/DD'), 'YYYY') YEAR FROM DUAL;
YEAR
----------------------------
2020
SQL> SELECT TO_CHAR(TO_DATE('98/12/25', 'RR/MM/DD'), 'YYYY') YEAR FROM DUAL;
YEAR
----------------------------
1998
● 현재 연도의 마지막 두 자리가 50 ~ 99 사이일 경우
– 명시한 두 자릿수 연도가 00 ~ 49 사이일 경우 반환되는 연도의 앞의 두 자리는 현재 연도의 앞의 두 자리에 1을 더한 값과 동일
– 명시한 두 자릿수 연도가 50 ~ 99 사이일 경우 반환되는 연도는 현재 연도와 앞의 두 자리가 동일
아래는 1950~1999년에 수행했음을 가정했을 때의 예시 입니다.
SQL> SELECT TO_CHAR(TO_DATE('12/10/27', 'RR/MM/DD'), 'YYYY') YEAR FROM DUAL;
YEAR
----------------------------
2012
SQL> SELECT TO_CHAR(TO_DATE('92/02/08', 'RR/MM/DD'), 'YYYY') YEAR FROM DUAL;
YEAR
----------------------------
1992
날짜형 타입의 형식 요소에는 아래와 같은 접미어를 사용할 수 있습니다.
TH
서수
DDTH
05TH
SP
철자로 표기한 숫자
DDSP
FIVE
SPTH 또는 THSP
철자로 표기한 서수
DDSPTH
FIFTH
형식 조절자
형식 조절자는 형식 문자열 안에서 여러 번 표현할 수 있습니다. 이러한 경우 나타낼 때마다 각각의 기능이 비활성화되어 있으면 활성화하고, 활성화 되어 있으면 비활성화 합니다.
FM 형식 조절자를 통해 공백을 채우는 방식을 변경할 수 있고, FX 형식 조절자를 통해 입력 문자열과 형식 문자열이 정확히 일치하는지 검사할 수 있습니다.
FM
Tibero는 각각의 형식 요소에 대해 그 형식 요소가 출력하는 문자열의 최대 크기만큼 공백 문자를 채웁니다. 예를 들어 MONTH 형식 요소의 경우, 가장 긴 달은 'SEPTEMBER'이므로 나머지 달은 오른쪽에 공백을 채워서 아홉 글자를 맞추게 됩니다.
FM을 명시하면 공백을 채우는 방법이 아래와 같이 달라집니다.
● TO_CHAR 함수의 DATE 타입 형식 문자열에서, FM을 사용하는 경우
– 모든 공백 문자와 앞에 붙는 '0'이 제거 (예: 4월을 MM으로 출력하면 04 대신 4가 출력) – FM이 비활성화된 경우는 각각의 형식 요소에 대해 항상 같은 길이의 문자열이 출력되지만, FM이 활성화되어 있을 경우는 이 문자열의 길이가 입력에 따라 변동가능
● TO_CHAR 함수의 NUMBER 타입 형식 문자열에서, FM을 사용하는 경우
– 숫자 앞에 붙는 모든 공백 문자와 '9' 형식 요소에 의해 생긴 뒤에 붙는 모든 0이 제거, 결과는 왼쪽으로 정렬된 형태로 출력
– FM이 비활성화된 경우 공백 문자는 숫자의 앞을 채우므로 항상 오른쪽으로 정렬
FX
Tibero는 형식 문자열과 입력 문자열이 정확히 일치하는지 검사하고, 만약 하나라도 어긋나는 경우 오류를 발생시킵니다.
FX 명시 시 제약조건
구분자나 큰따옴표(" ") 문자열의 위치가 형식 문자열에서의 위치와 정확히 일치해야 합니다.
추가적인 공백 문자를 허용하지 않습니다. 만약 FX가 비활성화된 경우엔 공백 문자는 무시됩니다.
입력 문자열에서 숫자들의 자릿수는 형식 문자열 각 요소에서 사용하는 자릿수와 정확히 일치해야 합니다.
Last updated