본문 바로가기

Database

[ SQL ] TRUNC(TRUNCATE) VS ROUND

 

1. 수학적으로 쓰일 경우

 

SELECT ROUND(13.577, 2) FROM DUAL;

소수점 둘째자리에서 반올림

 

 

SELECT TRUNC(13.577, 2) FROM DUAL;

소수점 둘째자리에서 버림

 

 

 

2. 날짜

 

SELECT TRUNC(SYSDATE) FROM DUAL;

변화가 없는 것 처럼 보이지만

 SELECT TO_CHAR(TRUNC(SYSDATE), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; 

 

시간까지 보이게 했을 때 시간이 모두 초기화 된 것을 볼 수 있다.

SELECT TO_CHAR(TRUNC(SYSDATE, 'YEAR'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL;

 

YEAR(YYYY) 년도 이후 초기화

SELECT TO_CHAR(TRUNC(SYSDATE, 'MONTH'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL;

 

MONTH(MM) 월 이후 초기화

SELECT TO_CHAR(TRUNC(SYSDATE, 'DAY'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL;

 

현재 날짜의 최근 일요일

SELECT TO_CHAR(TRUNC(SYSDATE, 'DD'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL;

 

날짜 뒤로 초기화

SELECT TO_DATE(TRUNC(SYSDATE, 'MONTH')) + (LEVEL -1)
FROM DUAL
CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'DD'))
;

 

이번달 1일부터 마지막날짜 까지를 표시

 

SELECT TO_CHAR(LAST_DAY(SYSDATE), 'DD') FROM DUAL;

이번 달의 마지막 날이 몇 일인지를 표시

'Database' 카테고리의 다른 글

[ SQL ] ORACLE INDEX  (0) 2021.05.12
[ SQL ] 트리거 (TRIGGER)  (0) 2021.05.04
[ SQL ] TO_CHAR 함수  (0) 2021.05.03
[ SQL ] 문자열 함수들  (0) 2021.05.03
[ SQL ] PROCEDURE(프로시져), PACKAGE(패키지)  (0) 2021.05.02