▶ 단일 행 함수에서 사용하는 날짜 출력 형식

 

▶ 단일 행 함수에서 사용하는 숫자 출력 형식

 

▶ 변환 함수

출력포멧 지정할때 TO_CHAR

날짜 형식 입력할때 TO_DATE 꼭 입력하기

 

 

예제 1. 현재 날짜를 다양한 형식으로 출력해보자

SELECT TO_CHAR(sysdate, 'YYYY/MM/DD') 날짜,
TO_CHAR(sysdate, 'YYYY/MM/DD:HH24:MI:SS') 날짜,
TO_CHAR(sysdate, 'YY/MM/DD:HH:MI:SS AM') 날짜
FROM dual;

날짜                    날짜                    날짜
----------------------- ----------------------- -----------------------
2021/11/15              2021/11/15:16:23:55     21/11/15:04:23:55 오후


SELECT TO_CHAR(sysdate, 'DD Month YYYY') ToDay FROM DUAL;

TODAY
---------------
15 11월 2021


SELECT TO_CHAR(sysdate, 'DAY Mon YY') ToDay FROM DUAL;

TODAY
---------------
월요일 11월 21


SELECT TO_CHAR(sysdate, 'DY Mon YY') ToDay FROM DUAL;

TODAY
---------------
월 11월 21


SELECT TO_CHAR(sysdate, '"오늘은 "YYYY"년 "MM"월 "DD"일 입니다."') 날짜
FROM DUAL;


날짜
-----------------------
오늘은 2021년 11월 15일
 입니다.

 

예제 2. 10번 부서 사원의 입사일을 다음의 형식으로 검색한다.
'XXX 사원의 입사일은 XXXX년 XX월 XX일입니다.'

SELECT ename||' 사원의 입사일은 '||
TO_CHAR(hdate, 'YYYY"년 "MM"월 "DD"일 입니다."') 입사일
FROM emp
WHERE dno = '10';

입사일
------------------------------------------------------
문시현 사원의 입사일은 1991년 02월 01일 입니다.
남궁연호 사원의 입사일은 1993년 12월 13일 입니다.
김선유 사원의 입사일은 1998년 10월 17일 입니다.
권나현 사원의 입사일은 2015년 05월 21일 입니다.
김진성 사원의 입사일은 2008년 03월 13일 입니다.

 

예제 3. 다양한 형식으로 숫자를 출력해 보자

SELECT TO_CHAR(12345.678, '999,999.99999') num FROM dual;

NUM
----------------------------
  12,345.67800
  
  
SELECT TO_CHAR(12345.678, '099,999.999') num FROM dual;

NUM
------------------------
 012,345.678
 
 
 SELECT TO_CHAR(12345.678, '9,9999.9') num FROM dual; //소수 이하 자리수를 부족하게 지정하면 반올림 된다.

NUM
------------------
 1,2345.7
 
 
 SELECT TO_CHAR(12345.678, '9,999.9') num FROM dual;

NUM
----------------
########


SELECT TO_CHAR(1234, '$999,999') num FROM dual;

NUM
------------------
   $1,234
   
   
SELECT TO_CHAR(1234, 'L999,999') num FROM dual;

NUM
------------------------------------
          ₩1,234
          

SELECT TO_CHAR(-1234, '999,999MI') num FROM dual;

NUM
----------------
  1,234-
  
  
SELECT TO_CHAR(123456789, '9.999EEEE') num FROM dual;

NUM
----------------------
  1.235E+08

 

예제 3. 10번 부서 사원의 보너스가 급여의 몇 퍼센트 인지 검색한다.
- 급여는 월간 급여이고 보너스는 연간 보너스이다.
- 보너스가 NULL인 경우 0으로 환원해서 검색한다.

SELECT eno 사번, ename 이름,
TO_CHAR(NVL(comm,0)/(sal*12)*100, '90.99')||'%' 급여_비율
FROM emp
WHERE dno='10';

사번    이름       급여_비율
------- ---------- --------------
1001    문시현       0.96%
2001    남궁연호     0.42%
3001    김선유       0.78%
0269    권나현       6.09%
0401    김진성       2.60%

 

예제 4. 1992년 이전에 입사한 사원의 정보를 검색해 보자

SELECT eno 사번, ename 이름, hdate 입사일
FROM emp
WHERE hdate < TO_DATE('19920101','YYYYMMDD');

사번    이름       입사일
------- ---------- ----------
0001    안영희     1991/01/01
0201    안영숙     1991/02/01
0202    손하늘     1991/12/01
0302    박선경     1991/03/02
1001    문시현     1991/02/01

 

실습

1. 학생의 평균 평점을 다음 형식에 따라 소수점 이하 두 자리까지 검색한다.
  'XXX 학생의 평균 평점은 x.xx입니다.'

SELECT sname||' 학생의 평균 평점은 '||TO_CHAR(avr, '9.99')||'입니다.' "학생들의 평균평점"
FROM student;

학생들의 평균평점
----------------------------------------------------------------------------------------------------
정동상 학생의 평균 평점은   .95입니다.
유태지 학생의 평균 평점은  3.28입니다.
정욱상 학생의 평균 평점은  1.44입니다.
정욱주 학생의 평균 평점은   .95입니다.
정남윤 학생의 평균 평점은  3.23입니다.
한현석 학생의 평균 평점은  2.45입니다.
김용서 학생의 평균 평점은  1.48입니다.


SELECT sname||' 학생의 평균 평점은 '||TO_CHAR(avr, '90.99')||'입니다.' "학생들의 평균평점" 
FROM student;
// 앞에 0 출력해주기위해

학생들의 평균평점
----------------------------------------------------------------------------------------------------
정동상 학생의 평균 평점은   0.95입니다.
유태지 학생의 평균 평점은   3.28입니다.
정욱상 학생의 평균 평점은   1.44입니다.
정욱주 학생의 평균 평점은   0.95입니다.
정남윤 학생의 평균 평점은   3.23입니다.
한현석 학생의 평균 평점은   2.45입니다.
김용서 학생의 평균 평점은   1.48입니다.


2. 교수의 부임 일을 다음 형식으로 검색한다.
  'XXX 교수의 부임일은 YYYY년 MM월 DD일입니다.'

SELECT pname||' 교수의 부임일은 '||TO_CHAR(hiredate, 'YYYY"년 "MM"월 "DD"일 입니다."') "교수 부임일"
FROM professor;

교수 부임일
----------------------------------------------------------------------------------------------------
송강 교수의 부임일은 2002년 08월 12일 입니다.
시진영 교수의 부임일은 1991년 02월 01일 입니다.
장청아 교수의 부임일은 2003년 05월 20일 입니다.
이초아 교수의 부임일은 2010년 07월 06일 입니다.
문규식 교수의 부임일은 2005년 02월 11일 입니다.
이규진 교수의 부임일은 1998년 10월 07일 입니다.
이준영 교수의 부임일은 1991년 10월 04일 입니다.


3. 교수 중에 3월에 부임한 교수의 명단을 검색한다.

SELECT pname "3월에 부임한 교수이름", hiredate 부임일
FROM professor
WHERE TO_CHAR(hiredate, 'MM')= '03';

3월에 부임한 교수이름          부임일
------------------------------ ----------
하영진                         2004/03/02


4. 화학과 1학년 학생들의 4.5 환산 평점을 다음 형식에 따라 소수점 이하 두 자리까지 검색한다.
'XXX 학생의 4.5 환산 평점은 x.xx입니다.'

SELECT major 학과, syear 학년, 
sname||' 학생의 4.5 환산 평점은 '||TO_CHAR(avr*4.5/4, '90.99')||'입니다.' "4.5 환산 평점"
FROM student
WHERE major='화학'
AND syear = 1;


학과          학년   4.5 환산 평점
------- ---------- ----------------------------------------------------
화학             1  김람석 학생의 4.5 환산 평점은   4.01입니다.
화학             1  남궁경아 학생의 4.5 환산 평점은   2.66입니다.

 

+ Recent posts