단일 행 함수에서 사용하는 날짜 출력 형식
|
ㅇ
|
표현 문자
|
의미(예)
|
|
년
|
YYYY
|
네 자리로 표현된 년도(1999, 2008, 2011)
|
|
|
YY
|
두 자리로 표현된 년도(99,03)
|
|
|
RR
|
두 자리로 표현된 년도(99,03)
|
|
월
|
MM
|
두 자리 숫자로 표현된 월 (03, 04)
|
|
|
month
|
영문이나 한글로 표현된 월 (march, april, 3월, 4월)
|
|
|
mon
|
약자로 표현된 영문 및 한글 월(mar, apr, 3월, 4월)
|
|
일
|
DD
|
두자리 숫자로 표현된 일자(01, 02)
|
|
|
DAY
|
영문이나 한글 요일 (Sunday, Monday, 일요일,
월요일)
|
|
|
DY
|
약자로 표현된 요일 (sun, mon, 일, 월)
|
|
시
|
hh24
|
1시에서 24시까지 표현
|
|
|
hh
|
1시에서 12시까지 표현
|
|
분
|
mi
|
두 자리 분 표시
|
|
초
|
ss
|
두 자리 분 표시
|
|
|
ssssss
|
하루를 초로 환산한 다음 표현(0~86399)
|
|
오전/오후
|
am/pm
|
오전 오후 표기
|
단일 행 함수에서 사용하는 숫자 출력 형식
|
표현문자
|
의미(예)
|
|
9
|
숫자의 출력 폭지정, (자리수가 부족하면 생략한다.)
|
|
0
|
선행 0 표기 (자리수를 반드시 맞춘다.)
|
|
$
|
화폐 표기 (달러)
|
|
L
|
지역 화폐 표기(각 국가 코드에 따라 다르다.)
|
|
,
|
쉼표 위치 지정
|
|
.
|
마침표 위치 지정
|
|
MI
|
음수의 - 기호 오른쪽에 표기
|
|
EEEE
|
실수 표현법을 이용
|
*변환 함수
|
함수명
|
기능
|
|
TO_CHAR
|
날짜나 숫자를 문자로 변환한다.
TO_CHAR(날짜, 출력형식), TO_CHAR(숫자, 출력형식)
|
|
TO_DATE
|
데이터를 날짜형으로 해석한다.
TO_DATE(문자, 해석형식)
|
|
TO_NUMBER
|
데이터를 숫자로 해석한다.
대부분의 경우 오라클의 자동 형 변환에 의해 숫자로 읽을 수 있는 문자는 숫자로 자동 변환됨으로 사용 빈도가 낮다.
|
예제 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;
select
to_char(sysdate, 'dd month yyyy') today from dual;
select
to_char(sysdate, 'day mon yy') today from dual;
select
to_char(sysdate, 'dy mon yy') today from dual;
select to_char(sysdate, '"오늘은 "YYYY"년 "MM"월 "DD"일 입니다."') 날짜
from
dual;
예제 2. 10번 부서 사원의 입사일을 다음의 형식으로 검색한다.
'XXX 사원의 입사일은 XXXX년 XX월 XX일입니다."
select ename ||' 사원의 입사일은 '|| to_char(hdate,
'YYYY"년 "MM"월 "DD"일 입니다."') 입사일
from
emp
where
dno = '10';
예제 3. 다양한 형식으로 숫자를 출력해 보자
select
to_char(12345.678, '999,999.99999') num from dual;
# 소수 이하에 지정한 자리는 0을 채우지만 앞쪽 빈자리는 무시한다.
select
to_char(12345.678, '099,999.999') num from dual;
select
to_char(12345.678, '9,9999.9') num from dual;
# 소수 이하 자리수를 부족하게 지정하면 반올림 된다.
select
to_char(12345.678, '9,999.9') num from dual;
# 소수점 앞 쪽 형식이 원래 값보다 작으면 출력장애가 발생한다.
select
to_char(1234, '$999,999') num from dual;
select
to_char(1234, 'L999,999') num from dual;
# 시스템의 설정에 따라 경우 '$' 또는 '羊' 기호로 출력되기도 한다.
select
to_char(-1234, '999,9999MI') num from dual;
select
to_char(123456789, '9.999EEEE') num from dual;
예제 3. 10번 부서 사원의 보너스가 급여의 몇 퍼센트 인지 검색한다.
- 급여는 월간 급여이고 보너스는 연간 보너스이다.
- 보너스가 NULL인 경우 0으로 환원해서 검색한다.
select eno 사번, ename 이름, to_char(nvl(comm,0)/(sal*12)*100,
'90.99') || '%' 급여_비율
from
emp
where
dno='10';
예제 4. 1992년 이전에 입사한 사원의 정보를 검색해 보자
select eno 사번, ename 이름, hdate 입사일 from emp
where
hdate < to_date('19920101','YYYYMMDD');
실습
1. 학생의 평균 평점을 다음 형식에 따라 소수점 이하 두 자리까지 검색한다. 'XXX 학생의 평균 평점은 x.xx입니다.'
select sname|| ' 학생의 평균 평점은 '|| trunc(avr,2)||'입니다.'
from student;
# 소수점 두째자리까지 찍기 위해서는 trunc를 이용해야함.
2. 교수의 부임 일을 다음 형식으로 검색한다. 'XXX 교수의 부임일은 YYYY년 MM월 DD일입니다.'
select pname ||' 교수의 부임일은 '|| to_char(hiredate, 'YYYY"년 "MM"월 "DD"일입니다."')
from professor;
# to_char로 변환하여 날짜를 문자로 변환하여 출력한다.
3. 교수 중에 3월에 부임한 교수의 명단을 검색한다.
select
pname, hiredate
from
professor
where to_char(hiredate,'MM') = 03;
#to_char를 이용하여 3월만 뽑아냄
4. 화학과 1학년 학생들의 4.5 환산 평점을 다음 형식에 따라 소수점 이하 두 자리까지 검색한다. 'XXX 학생의 4.5 환산 평점은 x.xx입니다.'
select sname ||' 학생의
4.5 환산 평점은 '|| trunc((avr/4*4.5),2)||'입니다.'
from student;
#trunc 를 이용해 소수점을 조절하고 trunc 안에서 연산을 함.
댓글 없음:
댓글 쓰기