-- Title : [8i] 날짜 함수 및 TO_CHAR, TO_DATE, TO_NUMBER 예
-- Reference : OLN
-- Key word : date function to_char to_date to_number
********************************************************************************************/
/****************************************************************************************
-- 날짜 함수
****************************************************************************************/
- MONTHS_BETWEEN(date1, date2) :
date1 과 date2 사이의 월 수를 리턴한. 결과는 음수 또는 양수가 될 수 있다. date1 이
date2 보다 이후이면 결과는 양수이고, date1 이 date2 보다 이전이면 결과는 음수이다.
결과의 비정수 부분은 월의 부분을 나타낸다.
- ADD_MONTHS(date, n) :
월 수 n 을 date 에 더한다. n 은 정수이어야 하며 음수일 수 있다.
- NEXT_DAY(date, 'char') :
date 다음의 명시된 요일 ('char') 의 날짜를 찾는다. char는 요일이나 문자 스트링을
나타내는 숫자가 올 수 있다.
- LAST_DAY(date) :
date 를 포함하는 월의 마지막 날짜를 찾는다.
- ROUND(date[,'fmt']) :
포맷 모델 fmt 에 명시된 단위에 대해 반올림한 date 를 리턴한다. fmt 가 생략되면,
date 를 가장 가까운 날짜로 반올림 된다.
- TRUNC(date[, 'fmt']) : 포맷 모델 fmt 에 명시된 단위에 대해 절삭한 date 를 리턴한다.
fmt 가 생략되면, date 는 가장 가까운 날짜로 절삭된다.
/****************************************************************************************
-- 숫자를 가진 TO_CHAR 함수 포맷 형식
****************************************************************************************/
형식 의미 예 결과값
──────┬────────────────────┬─────┬──────
9 │9는 숫자의 폭(단위)을 의미 │ 9999999 │30000000
──────┼────────────────────┼─────┼──────
0 │숫자 앞에 빈자리가 있는 경우 0으로 표시 │ 09999999 │03000000
──────┼────────────────────┼─────┼──────
$ │달러 화폐 기호 표시 │ $9999999 │$3000000
──────┼────────────────────┼─────┼──────
L │각국 화폐 기호 표시 │ L9999999 │\3000000
──────┼────────────────────┼─────┼──────
.(period) │소수점 표시 │9999999.9 │3000000.0
──────┼────────────────────┼─────┼──────
,(comma) │천단위 표시 │9,999,999 │3,000,000
──────┴────────────────────┴─────┴──────
/****************************************************************************************
-- 날짜를 가진 TO_CHAR 함수 포맷 형식
****************************************************************************************/
형식 의미 예 결과값
──────┬────────────────────┬─────┬───────
YYYY │네자리로 연도를 숫자로 표현 │ 2000년 │ 2000
──────┼────────────────────┼─────┼───────
YEAR │연도를 문자로 표시함 │ 2000년 │TWO THOUSAND
──────┼────────────────────┼─────┼───────
MM │월을 두자리 숫자로 표시 │ 12월 │ 12
──────┼────────────────────┼─────┼───────
MON │월을 세자리로 줄여서 문자로 표현 │ 12월 │ DEC
──────┼────────────────────┼─────┼───────
MONTH │월을 문자로 모두 표현 │ 12월 │ DECEMBER
──────┼────────────────────┼─────┼───────
DY │세자리 영문 요일 이름 │ 일요일 │ SUN
──────┼────────────────────┼─────┼───────
DAY │영문 요일 이름 │ 일요일 │ SUNDAY
──────┼────────────────────┼─────┼───────
HH │하루중 시간을 표시(HH12와 동일) │ HH │ 12
│HH24는 24시간을 기준 │ HH24 │ 24
──────┼────────────────────┼─────┼───────
MI │분 │ │
──────┼────────────────────┼─────┼───────
SS │초 │ │
──────┼────────────────────┼─────┼───────
fm │Day와 Month 앞에 붙인느 접두어 │ DD │ 09
│fm을 사용하면 가변적인 길이를 표시 │ fmDD │ 9
──────┼────────────────────┼─────┼───────
TH │서수를 표시할 때(DDTH, DDth) │ DDTH │ 25TH
──────┼────────────────────┼─────┼───────
SP │날짜가 문자로 표현(DDSP, DdSP, ddsp) │ DDSP │ TWENTY-FIVE
──────┼────────────────────┼─────┼───────
SPTH/THSP │SP와 TH의 결합(DDSPTH) │ SPTH │TWENTY-FIFTH
──────┴────────────────────┴─────┴───────
/****************************************************************************************
-- 날짜를 가진 TO_CHAR 함수 예
****************************************************************************************/
SQL> SELECT empno, TO_CHAR(hiredate, 'MM/YY') Month_Hired
2 FROM EMP
3 WHERE ename = 'BLAKE';
EMPNO MONTH
---------- -----
7698 05/81
SQL> SELECT ename, TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE
2 FROM emp;
ENAME HIREDATE
---------- -----------------
SMITH 17 December 1980
ALLEN 20 February 1981
WARD 22 February 1981
...
14 rows selected.
SQL> SELECT ename, TO_CHAR(hiredate, 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') HIREDATE
2 FROM emp;
ENAME HIREDATE
---------- --------------------------------------------
SMITH Seventeenth of December 1980 12:00:00 AM
ALLEN Twentieth of February 1981 12:00:00 AM
WARD Twenty-Second of February 1981 12:00:00 AM
...
14 rows selected.
/****************************************************************************************
-- 숫자를 가진 TO_CHAR 함수 사용 예
****************************************************************************************/
SQL> SELECT TO_CHAR(sal, '$99,999') SALARY
2 FROM emp
3 WHERE ename = 'SCOTT';
SALARY
--------
$3,000
/****************************************************************************************
- TO_NUMBER 와 TO_DATE 함수 사용 예
****************************************************************************************/
SQL> SELECT ename, hiredate
2 FROM emp
3 WHERE hiredate = TO_DATE('February 22, 1981', 'Month dd, YYYY');
ENAME HIREDATE
---------- --------
WARD 22-FEB-81