--올림, 내림, 반올림
SELECT
CEIL(10.3) C -- 정수만 가능
,FLOOR(10.7) F -- 정수만 가능
,ROUND(10.77, 1) R -- 유일하게 소수점 가능
,ROUND(10.77, -2) R -- 유일하게 소수점 가능
,ROUND(10.34,1) R
FROM DUAL;
-- SIGN 부호 -1, 0, 1 만 표시 DECODE는 동등비교만 된다
-- SIGN과 같이 사용 시 크기 비교가 가능해진다.
SELECT
SIGN(-10)
,SIGN(0)
,SIGN(20)
FROM DUAL;
SELECT
SIGN(-10)
,SIGN(0)
,SIGN(20)
FROM DUAL;
-- 0으로 만든다.
SELECT TRUNC(123.934, -2)
,TRUNC(SYSDATE)
,ROUND(SYSDATE)
,ROUND(TO_DATE('20220109 11:59:59', 'YYYYMMDD HH24:MI:SS')) R1
,ROUND(TO_DATE('20220109 12:59:59', 'YYYYMMDD HH24:MI:SS')) R2 -- 정오 기준 다음날 아님 오늘
,TRUNC(TO_DATE('20220109 11:59:59', 'YYYYMMDD HH24:MI:SS')) T1 --무조건 자른다
FROM DUAL;
-- 월 다루기 -도 가능
SELECT
ADD_MONTHS(SYSDATE, 3)
,ADD_MONTHS(SYSDATE, -3)
FROM DUAL;
-- TO_DATE
-- DB 기준 DB가 가진 현재 시간을 리턴
SELECT
CURRENT_DATE
,SYSDATE
FROM DUAL;
-- 그리드에서 정렬이 오른쪽이면 숫자, 왼쪽이면 문자열
SELECT EXTRACT(YEAR FROM SYSDATE)A
, EXTRACT(MONTH FROM SYSDATE)B
, EXTRACT(DAY FROM SYSDATE)C -- 리턴 타입이 숫자
, TO_CHAR(SYSDATE,'YYYY')D --리턴 타입이 문자
FROM DUAL;
--해당 달의 마지막 날 반환
SELECT LAST_DAY(SYSDATE) D1
, ADD_MONTHS(TRUNC(SYSDATE, 'MM'),1)-1 D2
FROM DUAL;
SELECT NEXT_DAY(SYSDATE,6) --인덱스로 따짐 단 1부터 일요일 돌아오는 날짜
FROM DUAL;
SELECT
ABS(-5) COL1 -- 부등호 제외한
,ABS(5) COL2 -- 절대값
,FLOOR(10.5) COL3 -- 내림
,CEIL(10.5) COL4 -- 올림
,POWER(2,5) COL5 -- 제곱
,SQRT(2) COL6 --루트
,ROUND(10.4) COL7 -- 반올림인데 소수점 가능
,ROUND(10.55,1) COL8 -- 2번 째 인자는 소수점 몇번째를 기준으로 할지
,TRUNC(10.4) COL9 -- 버림
,TRUNC(10.5) COL10 --무조건 버림
,TRUNC(11.5, -1) COL11 -- 정수 1의자리 버림
,ADD_MONTHS(TO_DATE('20180101','YYYYMMDD'),3) COL12 -- 날짜로 이후 3달 더하기
,CURRENT_DATE COL13 -- DB기준 현재시간
,EXTRACT(YEAR FROM SYSDATE) COL14 -- 년도 추출
,EXTRACT(MONTH FROM SYSDATE) COL15 -- 월 추출
,EXTRACT(DAY FROM SYSDATE) COL16 -- 일 추출
,NEXT_DAY('20180206',2) COL18 -- 1부터 일요일 돌아오는 그 요일의 날짜 반환
,NEXT_DAY('20180206','월') COL19 -- 월 화 수 목 금 토 일 가능
,SYSDATE COL20 -- DB기준 현재시간
FROM DUAL;