TO_CHAR 함수는 TIME 포맷(HH:MI:SS)을 포함하는 스트링 또는 TIME을 포함하는 날짜/시간 타입(TIME, TIMESTAMP, DATETIME) 값을 날짜/시간 포맷 1에 따라 스트링으로 변환하여 이를 반환하며, 리턴 값의 타입은 VARCHAR이다. 포맷 인자가 생략되면, 디폴트 포맷에 따라 문자열로 변환한다. 주어진 스트링과 대응하지 않는 포맷 지정자가 지정되면 에러를 반환한다.
TO_CHAR( date_time [, format[, date_lang_string_literal ]] )
date_time :
• date
• time
• timestamp
• datetime
• NULL
format :
• character strings (날짜/시간 포맷 1 표 참조)
• NULL
date_lang_string_literal : (date_lang_string_literal 표 참조)
• 'en_US'
• 'ko_KR'
날짜/시간 타입 |
디폴트 출력 포맷 |
---|---|
DATE |
'MM/DD/YYYY' |
TIME |
'HH:MI:SS AM' |
TIMESTAMP |
'HH:MI:SS AM MM/DD/YYYY' |
DATETIME |
'HH:MI:SS.FF AM MM/DD/YYYY' |
format 값 |
의미 |
---|---|
CC |
세기 |
YYYY, YY |
4자리 연도, 2자리 연도 |
Q |
분기(1, 2, 3, 4; 1월~3월 = 1) |
MM |
월(01-12; 1월 = 01) |
MONTH |
월 이름 |
MON |
축약된 월 이름 |
DD |
날(1-31) |
DAY |
요일 이름 |
DY |
축약된 요일 이름 |
D 또는 d |
요일(1-7) |
AM 또는 PM |
오전/오후 |
A.M. 또는 P.M. |
마침표가 포함된 오전/오후 |
HH 또는 HH12 |
시(1-12) |
HH24 |
시(0-23) |
MI |
분(0-59) |
SS |
초(0-59) |
FF |
밀리초(0-999) |
- / , . ; : "텍스트" |
구두점과 인용구는 그대로 결과에 표현됨 |
포맷 구성 요소 |
Date_lang_string_literal |
|
---|---|---|
'en_US' |
'ko_KR' |
|
MONTH |
JANUARY |
1월 |
MON |
JAN |
1 |
DAY |
MONDAY |
월요일 |
DY |
MON |
월 |
Month |
January |
1월 |
Mon |
Jan |
1 |
Day |
Monday |
월요일 |
Dy |
Mon |
월 |
month |
january |
1월 |
mon |
jan |
1 |
day |
monday |
월요일 |
Dy |
mon |
월 |
AM |
AM |
오전 |
Am |
Am |
오전 |
am |
am |
오전 |
A.M. |
A.M. |
오전 |
A.m. |
A.m. |
오전 |
a.m. |
a.m. |
오전 |
PM |
AM |
오전 |
Pm |
Am |
오전 |
pm |
am |
오전 |
P.M. |
A.M. |
오전 |
P.m. |
A.m. |
오전 |
p.m. |
a.m |
오전 |
리턴 값 포맷의 자릿수
포맷 구성 요소 |
자릿수 |
---|---|
MONTH(Month, month) |
9 (ko_KR의 경우 4) |
MON(Mon, mon) |
3 (ko_KR의 경우 2 |
DAY(Day, day) |
9 (ko_KR의 경우 6) |
DY(Dy, dy) |
3 (ko_KR의 경우 2) |
HH12, HH24 |
2 |
"텍스트" |
텍스트의 길이 |
나머지 포맷 |
포맷의 길이와 같음 |
--creating a table having date/time type columns
CREATE TABLE datetime_tbl(a TIME, b DATE, c TIMESTAMP, d DATETIME);
INSERT INTO datetime_tbl VALUES(SYSTIME, SYSDATE, SYSTIMESTAMP, SYSDATETIME);
--selecting a VARCHAR type string from the data in the specified format
SELECT TO_CHAR(b, 'DD, DY , MON, YYYY') FROM datetime_tbl;
======================
'04, THU , FEB, 2010'
SELECT TO_CHAR(c, 'HH24:MI, DD, MONTH, YYYY') FROM datetime_tbl;
======================
'16:50, 04, FEBRUARY , 2010'
SELECT TO_CHAR(c, 'HH24:MI:FF, DD, MONTH, YYYY') FROM datetime_tbl;
ERROR: Invalid format.
SELECT TO_CHAR(d, 'HH12:MI:SS:FF pm, YYYY-MM-DD-DAY') FROM datetime_tbl;
======================
'04:50:11:624 pm, 2010-02-04-THURSDAY '
SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy');
======================
'Sunday October 2009'