-- ■ 변환 함수
/*
TO_CHAR() : 숫자나 날짜 데이터를 문자 타입으로 변환시켜주는 함수
TO_DATE() : 문자 데이터(날짜 형식)를 날짜 타입으로 변환시켜주는 함수
TO_NUMBER() : 문자 데이터(숫자 형식)를 숫자 타입으로 변환시켜주는 함수*/
SELECT 10 "숫자 10이다", TO_CHAR(10) "문자형태의 10이다"
FROM DUAL;
--==>> (우측정렬)(좌측정렬)
1010
-- ※ 날짜나 통화 형식이 맞지 않을 경우 세션 설정값을 통해
-- 설정할 수 있도록 한다,
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
--===>>Session이(가) 변경되었습니다.
ALTER SESSION SET NLA_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_CURRENCY = '\'; -- 화폐단위 : 원 (₩) ㄹ
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') --2021-03-29
, TO_CHAR(SYSDATE, 'YYYY')--2021
, TO_CHAR(SYSDATE, 'YEAR')--TWENTY TWENTY-ONE
, TO_CHAR(SYSDATE, 'MM')--03
, TO_CHAR(SYSDATE, 'MONTH')--3월
, TO_CHAR(SYSDATE, 'MON')--3월
, TO_CHAR(SYSDATE, 'DD') --29
, 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 오후
, TO_CHAR(SYSDATE, 'MI')--42
, TO_CHAR(SYSDATE, 'SS')--16
,TO_CHAR(SYSDATE, 'SSSSS')--60216 → 금일 흘러온 전체 초
, TO_CHAR(SYSDATE, 'Q')--1 → 분기
FROM DUAL;
--==>> 2021-03-29
SELECT '04', TO_NUMBER('04') "2"
FROM DUAL;
SELECT TO_CHAR(4) "1", '4' "2"
FROM DUAL;
SELECT TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) "확인"
FROM DUAL;
--==>>2021
--● EXTRACT()
SELECT TO_CHAR(SYSDATE, 'YYYY') --연도추출후 문자로
, TO_CHAR(SYSDATE, 'MM')-- 월 추출 후 문자
, TO_CHAR(SYSDATE, 'DD')--일 추출 문자로
, EXTRACT(YEAR FROM SYSDATE)--연도 추출 숫자로
, EXTRACT(MONTH FROM SYSDATE)--월 추출 숫자로
, EXTRACT(DAY FROM SYSDATE)-- 일 추출 숫자로
FROM DUAL;
--> EXTRACT() 는 년, 월, 일 이하 다른 것은 불가하다.
--● TO_CHAR () 활용 → 형식 맞춤 표기 결과값 반환
SELECT 6000 "1" --6000
, TO_CHAR(60000) "2" --60000
, TO_CHAR(60000, '99,999') "3" -- 60,000
, TO_CHAR(60000, '$99,999') "4" -- $60,000
, TO_CHAR(60000, 'L99,999') "5" -- \60,000
--L은 언어에 따른 통화표기가 된다.(₩)
-- 그리고 앞에 공백이 표시된다. 여러 국가 화폐단위 표시하려고 공백해둠
,LTRIM(TO_CHAR(60000, 'L99,999')) "6"-- \60,000
FROM DUAL;
--★ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD
-- ● 현재 시간을 기준으로 1일 2시간 3분 4초 후를 조회한다.
SELECT SYSDATE "현재시간"
, SYSDATE+ 1+ (2/24) + (3/(24*60)) + (4/(24*60*60)) "1일 2시간 3분 4초후"
FROM DUAL;
-- ● 현재 시간을 기준으로 1년 2개월 3일 4시간 5분 6초 후를 조회한다.
-- TO_YMINTERVAL() TO_DSINTERVAL()
SELECT SYSDATE "현재 시간"
, SYSDATE + TO_YMINTERVAL('01-02') + TO_DSINTERVAL('003 04:05:06') "연산결과"
FROM DUAL;
--==>> 2021-03-29 2022-06-01