실무에서 많이 활용되는 함수 중 하나인 형변환 함수. 형변환 함수들 (TO_NUMBER, TO_CHAR, TO_DATE) 중에서 내가 가장 많이 사용하는 형변환 함수는 TO_CHAR와 TO_DATE가 아닌가 싶다.
SELECT *
FROM A
WHERE TO_CHAR(A.b, 'YYYY-MM-DD')
→ 2024-03-17
형식으로 가장 많이 활용했던 것 같은데, 이 함수를 내가 이렇게 썼던 것에 대한 형변환 함수 정의를 제대로 알고 다른 형식으로도 변환하거나 다른 항목도 변환하면 좋을 것 같아 책에서 본 내용을 정리해 두고자 한다.
p.90
6.2.4 형변환 함수
형변환 함수란 특정 데이터형을 다른 데이터형으로 변환할 때 사용하는 함수입니다.
문자를 숫자로 변경하거나 숫자를 문자로, 또는 문자를 날짜로 혹은 그 반대로 변환 시 사용하는 함수입니다.
표6-6. 형변환 함수
1. TO_NUMBER (char): Char를 숫자로 변환
ex) SELECT TO_NUMBER('12345')
FROM DUAL;
→ 12345
2. TO_CHAR (n,number_format): 숫자인 n을 number_format에 맞게 문자로 변환, number_format은 생략 가능
ex) SELECT TO_CHAR(12345, '99,999')
FROM DUAL;
→ 12,345
3. TO_CHAR (char, date_format): 날짜인 date를 date_format 에 맞게 문자로 변환, date_format은 생략 가능
ex) SELECT TO_DATE(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
→ '2019-04-08 23:52:01'
4. TO_DATE (Char, date_format) : 문자 char 을 date_format 에 맞게 날짜로 변환, date_format은 생략 가능
ex) SELECT TO_DATE('2019-04-08 23:52:01', 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
→ '2019-04-08 23:52:01'
표6-7. 숫자 변환 형식
1. ,(콤마) : 콤마 표시
ex) TO_CHAR(123456,'999,999')
→ 123,456
2. .(소수점) : 소수점 표시
ex) TO_CHAR(123456.4, '999,999.9')
→ 123,456.4
3. 9 : 한 자리 숫자를 나타내는데, 실제 숫자의 자리 수와 같거나 크게 명시해야 함
ex) TO_CHAR(123456, '999,999')
→ 123,456
표6-8. 날짜 변환 형식
1. YYYY or YYY or YY or Y: 연도 표시
ex) TO_CHAR(SYSDATE,'YYYY')
→ 2019
2. MONTH or MON: 월 표시
ex) TO_CHAR(SYSDATE,'MONTH')
→ 4월
3. MM: 월을 01,02,...,12 형태로 표현
ex) TO_CHAR(SYSDATE,'MM')
→ 04
4. D: 주중 일자를 1~7까지 숫자로 표현
ex) TO_CHAR(SYSDATE,'D')
→ 2
5. DAY: 주중 일자를 요일로 표현
ex) TO_CHAR(SYSDATE,'DAY')
→ 월요일
6. DD: 일을 01,02,...,31 형태로 표현
ex) TO_CHAR(SYSDATE,'DD')
→ 08
7. DDD: 일을 001,002,...,365형태로 표현
ex) TO_CHAR(SYSDATE,'DDD')
→ 098
8. DL: 일을 요일까지 표현
ex) TO_CHAR(SYSDATE,'DL')
→ 2019년 4월 8일 월요일
9. HH or HH12: 시간을 01,02,...12 형태로 표현
ex) TO_CHAR(SYSDATE,'HH')
→ 04
10. HH24: 시간을 01,02,...24 형태로 표현
ex) TO_CHAR(SYSDATE,'HH24')
→ 16
11. MI: 분을 01,02,...,59 형태로 표현
ex) TO_CHAR(SYSDATE,'MI')
→ 53
12. SS: 초를 01,02,...,59 형태로 표현
ex) TO_CHAR(SYSDATE,'SS')
→ 05
13. WW: 주를 01,02,...,59 형태로 표현
ex) TO_CHAR(SYSDATE,'WW')
→ 14
쿼리6-5 TO_CHAR함수 사용 예
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
→ 2019-02-26 11:39:46