728x90
TRUNC함수는 Oracle에서 시간 및 숫자를 절사할때 많이 사용한다.
대략 내림함수와 비슷하다.
-- 기본 틀
TRUNC(데이터, 설정값)
데이터: 잘라낼 시간 및 숫자
설정값 : 자르는 조건
1.숫자
SELECT 1234.1234 AS MAIN
, TRUNC(1234.1234) AS no -- 0과 동일
, TRUNC(1234.1234, 1) AS one -- 소수점1까지남기고 절삭
, TRUNC(1234.1234, 2) AS two -- 소수점2까지 남기고 절삭
, TRUNC(1234.1234, 0) AS zero -- 소수점이하절삭
, TRUNC(1234.1234, -1) AS minus_one -- 1의 자리 이하 절삭
, TRUNC(1234.1234, -2) AS minus_two -- 10의자리 이하 절삭
FROM DUAL
위에 있는 SQL문을 보면 주석에도 적어놨지만
숫자를 절삭 할땐 설정값이 비었을 경우 0 과 동일하다.
설정값의 의미는 소수점 기준으로 절삭이라고 알면 좋다
실제 SQL문을 돌려본 결과는 아래 사진과 같다
MAIN | NO | ONE | TWO | ZERO | MINUS_ONE | MINUS_TWO |
1234.1234 | 1234 | 1234.1 | 1234.12 | 1234 | 1230 | 1200 |
2. 시간
SELECT SYSDATE
, TRUNC(SYSDATE) AS TODAY
, TRUNC(SYSDATE, 'MM') AS MM_월단위
, TRUNC(SYSDATE, 'DD') AS DD_일단위
, TRUNC(SYSDATE, 'IW') AS IW_주단위_월요일 -- 월요일 기준
, TRUNC(SYSDATE, 'DAY') AS DAY_주단위_일요일 -- 일요일 기준
, TRUNC(SYSDATE, 'HH24') AS HH24_시간단위
, TRUNC(SYSDATE, 'MI') AS MI_분단위
FROM DUAL;
날짜에서는 설정값이 없을경우 일단위(DD)와 동일함을 알 수 있고
날짜에서는 숫자단위가 아니라 키워드단위로 절삭하기 때문에 알고 있어야 절삭이 가능합니다.
SYSDATE | TODAY | MM_월단위 | DD_일단위 | IW_주단위_월요일 | DAY_주단위_일요일 | HH24_시간단위 | MI_분단위 |
10/7/2024 1:48:46 PM |
10/7/2024 12:00:00 AM |
10/1/2024 12:00:00 AM |
10/7/2024 12:00:00 AM |
10/7/2024 12:00:00 AM |
10/6/2024 12:00:00 AM |
10/7/2024 1:00:00 PM |
10/7/2024 1:48:00 PM |
여기서 주의해야할 점은 절삭이기 때문에 값을 버리는게 아니라 실질적으로 아래시간을 다 0으로 변환시킨것 뿐이지
데이터 양식은 그대로입니다
만약에 날짜에서 시간을 아예 버려 글자형식으로 바꾸고 싶다면 아래함수를 참고바랍니다
TO_CHAR(SYSDATE,'YYYY-MM-DD')
+) 추가지식
만약 날짜에 숫자단위를 넣을경우
EX) TRUNC(SYSDATE, 1)
해당 에러가 뜬다
728x90
'2.2 DB > ORACLE' 카테고리의 다른 글
[Oracle] 문자 채우기 (LPAD, RPAD) +응용 (0) | 2024.10.17 |
---|---|
[Oracle] CLOB과 BLOB의 정의 (0) | 2024.10.11 |
[Oracle] OUTER JOIN (+) (0) | 2024.10.04 |
[oracle] Union / Union ALL (0) | 2024.09.30 |
[Oracle] null 처리 함수 (NVL, NVL2) (0) | 2024.09.26 |
댓글