티스토리 뷰

포맷 형식(Format)

날짜형이나 숫자형은 표시하고 싶은 형식(Format)을 바꾸고 싶을 때가 있다.

해당 데이터를 가지고 형식을 지정하여 내가 표시하고 싶은 형식으로 변경할 수 있다.

 

날짜 포맷

※ TO_CHAR은 날짜 데이터 dateSrc를 날짜 형식 stringFormat에 따라 VARCHAR2 유형의 데이터를 리턴한다.

SQL문을 실시했는 날짜는 2022/05/24임!

그냥 제일 기본적인 날짜 포맷 정보는 YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초이다.

포맷 설명 예제






"text"
결과에 포함되는 구두점과 텍스트 SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL;
→ 20220524

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
→ 2022-05-24

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL;
→ 2022/05/24

SELECT TO_CHAR(SYSDATE, 'YYYY,MM,DD') FROM DUAL;
→ 2022,05,24

SELECT TO_CHAR(SYSDATE, 'YYYY.MM.DD') FROM DUAL;
→ 2022.05.24

SELECT TO_CHAR(SYSDATE, 'YYYY;MM;DD') FROM DUAL;
→ 2022;05;24

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') FROM DUAL;
→ 2022/05/24 17:34:40

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL;
→ 2022년 05월 24일
DL 날짜 형식 값을 반환 
※ NLS_DATE_FORMAT 의해 결정됨
SELECT TO_CHAR(SYSDATE, 'DL') FROM DUAL;
→ 2022년 5월 24일 화요일
YYYY
SYYYY
년 4자리
S를 지정하면 기원전의 날짜의 선두에 부의 부호(-)가 붙는다.
SELECT TO_CHAR(SYSDATE, 'YYYY') FROM DUAL;
→ 2022
YYY
YY
Y
년 3, 2, 1자리 SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL;
→ 22 -- 2022년이므로 뒤의 2자리인 22만 반환
RR 00~49는 2000~2049년
50~99는 1950~1999년을 의미한다.
SELECT TO_CHAR(SYSDATE, 'RR') FROM DUAL;
→ 22
Q 분기(1~4)
(1:1~3월, 2: 4~6월, 3: 7~9월, 4: 10~12월)
SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL;
→ 2 -- 2분기
MM 월(01~12, 1월 : 01) SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;
→ 05
D 요일(일→1, 토→7)
※ 세션의 NLS 지역에 따라 다름
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;
→ 3
DD 일(1~31) SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;
→ 24
DDD 년의 날(1~366) SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL;
→ 144 -- 365일 기준 144일
HH
HH12
시간(1~12) SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL;
→ 04 
HH24 시간(0~23) SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL;
→ 16
MI 분(0~59) SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;
→ 53
SS 초(0~59) SELECT TO_CHAR(SYSDATE, 'SS') FROM DUAL;
→ 19
SSSSS 오전 0시부터 경과한 초(0~86399) SELECT TO_CHAR(SYSDATE, 'SSSSS') FROM DUAL;
→63417
FF[1..9] - 밀리세컨드
- FF 뒤에 1 - 9 숫자를 설정하여 반환되는 날짜/시간 값의 밀리세컨드 부분의 자릿수를 지정 
※ 숫자를 지정하지 않으면 6으로 인식
- 타임스탬프 형식 및 기간 형식에서는 유효하지만 DATE형식에서는 유효하지 않음
SELECT TO_CHAR(SYSTIMESTAMP, 'SS.FF3') from DUAL;
→ 15.791
DY 요일(MON, 월 등) SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;
→ 화
DAY 요일(Monday, 월요일 등) SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL;
→ 화요일
MON 달 이름의 약어(1월~12월, JAN~DEC) SELECT TO_CHAR(SYSDATE, 'MON') FROM DUAL;
→ 5월
MONTH 달 이름 (1~12월, JANUARY~DECEMBER) SELECT TO_CHAR(SYSDATE, 'MONTH') FROM DUAL;
→ 5월
AM 오전, 오후
※ oracle 설정에 따라 AM,PM으로 반환
SELECT TO_CHAR(SYSDATE, 'AM') FROM DUAL;
→ 오후
WW 년의 주수(01~53)
첫 번째 주는 1월 1일로 시작, 7일에 종료
SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL;
→ 21 -- 1년 기준 21주
W 월의 주수(1~5)
첫 주는 그 달의 1일로 시작, 7일에 종료
SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL;
→ 4

・숫자형 포맷

※ 포맷 형식의 자릿수가 지정한 수치보다 적으면 「#」으로 표시된다.

또 천 단위 콤마를 찍을 때는 ''안에 들어가는 단위 안에 (,)를 써주면 됨.

ex) TO_CHAR(1234567, '0000000') → 1234567 / TO_CHAR(1234567, '0,000,000') → 1,234,567

포맷 설명 예제
0 자리수에 못미치면 경우에는 0으로 채움 SELECT TO_CHAR(1234567, '000,000,000') FROM DUAL;
→ 001,234,567

SELECT TO_CHAR(1234567, '000,000') FROM DUAL;
→ ########

SELECT '*' || TO_CHAR(789, '000000') || '*' FROM DUAL;
→ * 000789*
9 자리수에 못미치면 그 자리를 표시안함 SELECT TO_CHAR(42.195, '999.99') FROM DUAL;
→ 42.20
※↑소수점 이하 자릿수 오버일 경우 반올림

SELECT TO_CHAR(1234567, '999,999,999') FROM DUAL;
→ 1,234,567
FM 문자열의 앞뒤공백을 제거 SELECT '*' || TO_CHAR(789, 'FM000000') || '*' FROM DUAL;
→ *000789*
S 「+」 또는 「-」 부호를 붙임 SELECT TO_CHAR(68000, 'S999,999') FROM DUAL;
→ +68,000

 


작성 이유

: sql을 작성하다 보면 숫자 형식이나 날짜 형식을 변경하고 싶을 때가 있는데 

매번 검색하기 귀찮아서 그냥 한번에 내가 보기 편하게 메모..!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함