- TO_CHAR() : 숫자나 날짜 데이터를 문자 타입으로 변환시켜주는 함수
- TO_DATE() : 문자 데이터를 날짜 타입으로 변환시켜주는 함수
- TO_NUMBER() : 문자 데이터를 숫자 타입으로 변환시켜주는 함수
※ 날짜나 통화 형식이 맞지 않을 경우 설정값을 통해 세션을 설정하여 사용할 수 있다.
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_CURRENCY = '\\';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
날짜형 → 문자형
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') -- 2022-02-22 (이건 문자형임)
, TO_CHAR(SYSDATE, 'YYYY') -- 2022
, TO_CHAR(SYSDATE, 'YEAR') -- TWENTY TWENTY-TWO
, TO_CHAR(SYSDATE, 'MM') -- 02
, TO_CHAR(SYSDATE, 'MONTH') -- 2월
, TO_CHAR(SYSDATE, 'MON') -- 2월
, TO_CHAR(SYSDATE, 'DD') -- 22
, TO_CHAR(SYSDATE, 'MM-DD') -- 02-22
, TO_CHAR(SYSDATE, 'DAY') -- 화요일
, TO_CHAR(SYSDATE, 'DY') -- 화
, TO_CHAR(SYSDATE, 'HH24') -- 16
, TO_CHAR(SYSDATE, 'HH') -- 04
, TO_CHAR(SYSDATE, 'HH AM') -- 04 오후
, TO_CHAR(SYSDATE, 'HH PM') -- 04 오후
-- AM이든 PM이든 지금 기준으로 출력
, TO_CHAR(SYSDATE, 'MI') -- 19
, TO_CHAR(SYSDATE, 'SS') -- 45
, TO_CHAR(SYSDATE, 'SSSS') -- 59369
-- 오늘 날짜의 자정부터 지금까지 흘러온 전체 초
, TO_CHAR(SYSDATE, 'Q') -- 1
FROM DUAL;
-- 다 문자형
SELECT 7 -- 숫자 우측 정렬
, '7' -- 문자 좌측 정렬
, TO_CHAR(7) -- 좌측 정렬
FROM DUAL;
--> 조회 결과 정렬 확인하기
EXTRACT()
SELECT TO_CHAR(SYSDATE, 'YYYY') -- 2022(문자형) → 연도를 추출하여 문자 타입으로 변환
, TO_CHAR(SYSDATE, 'MM') -- 02(문자형) → 월을 추출하여 문자 타입으로 반환
, TO_CHAR(SYSDATE, 'DD') -- 22(문자형) → 일을 추출하여 문자 타입으로 반환
, EXTRACT(YEAR FROM SYSDATE) -- 2022(숫자형) → 연도를 추출하여 숫자 타입으로 반환
, EXTRACT(MONTH FROM SYSDATE) -- 2 (숫자형) → 월을 추출하여 숫자 타입으로 반환
, EXTRACT(DAY FROM SYSDATE) -- 22 (숫자형) → 일을 추출하여 숫잩 타입으로 반환
FROM DUAL;
--> 연, 월, 일 이외의 다른 항목은 불가~!!
TO_CHAR() 항목 → 형식 맞춤 표기 결과값 반환
SELECT 60000
, TO_CHAR(60000, '99,999')
, TO_CHAR(60000, '$99,999')
, TO_CHAR(60000, 'L99,999') -- (기본 통화가 단일 특수 기호로 표현되지 않는 기호를 위해 공간을 많이 확보)
, LTRIM(TO_CHAR(60000, 'L99,999')) -- 이렇게 하면 공백 지울 수 있음
FROM DUAL; -- 모두 좌측 정렬임
--==>> 60000 60,000 $60,000 ₩60,000 ₩60,000
세션 설정 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
(앞에서 배운 방식)
현재 시간을 기준으로 1일 2시간 3분 4초 후를 조회한다.
SELECT SYSDATE "현재 시간"
, SYSDATE + 1 + (2/24) + (3/(24*60)) + (4/(24*60*60)) "1일2시간3분4초후"
FROM DUAL;
--==>> 2022-02-22 16:48:13
-- 2022-02-23 18:51:17
(TO_YMINTERVL(), TO_DSINTERVAL() 사용해서)
현재 시간을 기준으로 1년 2개월 3일 4시간 5분 6초 후를 조회한다. TO_YMINTERVL(), TO_DSINTERVAL() -- (앞에는 년, 월 뒤에는 일 초 단위 함수)
SELECT SYSDATE "현재 시간"
, SYSDATE + TO_YMINTERVAL('01-02') + TO_DSINTERVAL('003 04:05:06') "연산 시간" -- (매개변수는 문자타입)
FROM DUAL;
--==>>
/*
2022-02-22 17:04:53
2023-04-25 21:09:59
*/
부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'SQL > Oracle' 카테고리의 다른 글
23. VIEW (0) | 2022.03.12 |
---|---|
22. CASE 구문(조건문, 분기문) (0) | 2022.03.12 |
20. 날짜 연산 함수 (0) | 2022.03.12 |
19. 숫자 처리 함수 (0) | 2022.03.12 |
SQL Developer theme(dracula) 적용 (0) | 2022.03.11 |