TRUNC 함수는 절사하는 함수이다.
출처 : http://www.oracleclub.com
TRUNC(n, m)
TRUNC함수는 n값을 m 소숫점 자리로 반내림한 값을 반환합니다.
ROUND 함수와 비교해 보세요..
SQL>SELECT TRUNC(7.5597, 2) TEST FROM dual ;
TEST
-------
7.55
SQL>SELECT TRUNC (5254.26, -2 ) TEST FROM dual ;
TEST
-------
5200
-----------------------------------------------------------
TRUNC 함수는 위의 경우처럼 숫자에도 적용하지만,
오纘?날짜타입 필드에 대해서도 사용할 수 있다.
날짜타입을 TRUNC할때는 연월일을 짜를수 있다.
select sysdate,
trunc(sysdate),
trunc(sysdate,'dd'),
trunc(sysdate,'mm'),
trunc(sysdate,'yyyy')
from dual
결과:
2008-04-08 오후 5:17:01
2008-04-08
2008-04-08
2008-04-01
2008-01-01
쿼리 시간은 어떨지 비교해 보았습니다.
쿼리 대상 : 669,765 건 데이터
insert_date 필드는 인덱스 없으며,
insert_date 필드는 데이터가 생성된 날짜와 시간정보를 모두 가지고 있습니다.
1. select * from 테이블명 where insert_date = '2008-03-31'
--> 0건
2. select * from 테이블명 where trunc(insert_date,'dd') = '2008-03-31'
--> 111건 , 1초 걸림
3. select * from 테이블명 where to_char(insert_date,'YYYY-MM-DD') = '2008-03-31'
--> 111건 , 2초 걸림
4. select * from 테이블명 where to_date(insert_date) = '2008-03-31'
--> 111건 , 3초 걸림
Trunc함수가 to_char함수와 to_date함수 보다는 빠르군요.
출처 : http://blog.naver.com/gaegulee2k?Redirect=Log&logNo=100049584379
'DataBase > Sql' 카테고리의 다른 글
[Sql] 시노님 작업 참고 (1) | 2012.11.30 |
---|---|
[Sql] 페이지 단위 조회 (0) | 2012.11.28 |
[Oracle] update where (0) | 2012.11.12 |
[Sql] 행을 열로 표시 (0) | 2012.04.25 |
[Sql] NoSql (0) | 2012.01.04 |