숫자처리함수
✅ ABS
SELECT ABS(-10), ABS(10) FROM DUAL; // 둘다 10으로 나옴
✅ POWER(), SQRT()
SELECT POWER(3,3), SQRT(4) FROM DUAL // 27, 2 가 출력됨
✅ MOD
SELECT MOD(3,2)
FROM DUAL; // 1출력
SELECT E.*, MOD(SALARY,3) // *과 컬럼을 같이 출력하고 싶을때에는 앞에 E.으로 붙임
FROM EMPLOYEE E; // 연봉나눈 값이 0,1,2 중 출력
✅ ROUND
SELECT 126.567,ROUND(126.567), // 127이 출력됨 (소수점반올림해서 제거)
ROUND(126.467), // 126이 출력됨
ROUND(126.567,2) // 소수점 둘째자리에서 반올림됨 -> 126.57 출력됨
FROM DUAL;
✅ FLOOR
SELECT 126.567, FLOOR(126.567) // 소수점을 쓰고싶지 않을 때 사용
FROM DUAL; // 126으로 출력
✅ TRUNC
SELECT 126.567, TRUNC(126.567,2), // 소수점 두자리까지만 표현하고 나머지는 버림 (126.56)
TRUNC(126.567,-2), // 소수점자리에서 역순으로 두자리까지 표현하고 나머지버림 (100)
TRUNC(2123456.32,-2) // (2123400)
FROM DUAL;
✅ CEIL
SELECT 126.567, CEIL(126.567), CEIL(126.111) // 127로 출력
FROM EMPLOYEE;
날짜처리함수
✅ SYSDATE or SYSTIMESTAMP
(오라클이 설치되어 있는 컴퓨터의 날짜)를 출력
-> SYSDATE 예약어 -> 날짜 년/월/일 오늘 날짜 출력
-> SYSTIMESTAMP예약어 -> 날짜 + 시간까지 출력
-> 컴퓨터에서는 날짜 표현을 long으로 표현하며, 날짜도 산술연산 처리가 가능함
ex) SYSDATE + 30 -> 오늘 4/3이라면 5/3이 출력됨
-> SYSDATE 연산처리 결과는 일(DAY)로 나옴
SELECT SYSDATE, SYSDATE + 1, SYSDATE - 1 FROM DUAL // 21/09/22 , 21/09/23, 21/09/21
✅ NEXT_DAY
SELECT SYSDATE, NEXT_DAY(SYSDATE,'월') // 월요일이 가장가까운 다음 날짜 -> 4월 10일
FROM DUAL;
SELECT * FROM V$NLS_PARAMETERS; // 모든 언어의 종류를 볼 수 있음
ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN'; // SESSION 을 미국으로 바꾸면
SELECT SYSDATE, NEXT_DAY(SYSDATE,'MON'),NEXT_DAY(SYSDATE,'TUESDAY') // 외국언어에 맞춰서 출력가능 (MON)
FROM DUAL;
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN'; // 다시 한국언어로 바꾸기
✅ LAST_DAY
SELECT SYSDATE, LAST_DAY(SYSDATE), // 4월 기준으로 4/30일 출력
LAST_DAY(SYSDATE+30) // 4월 기준으로 + 30은 5월 이므로 5/31 출력
FROM DUAL;
✅ ADD_MONTHS
SELECT SYSDATE, ADD_MONTHS(SYSDATE,4) // 4월3일 기준으로 8월 3일이 나옴
FROM DUAL;
✅ MONTHS_BETWEEN
SELECT FLOOR(ABS(MONTHS_BETWEEN(SYSDATE,'23/08/17'))) // 소수점으로 나오므로 버려주기
FROM DUAL; // 4출력
✅ EXTRACT
SELECT EXTRACT(YEAR FROM SYSDATE) AS 년, EXTRACT(MONTH FROM SYSDATE) AS 월,
EXTRACT(DAY FROM SYSDATE) AS 일
FROM DUAL; // -- 현재날짜의 년, 월, 일 출력하기
날짜 처리 함수들을 이용한 예제 문제
SELECT ADD_MONTHS(SYSDATE,18) AS 전역일자, (ADD_MONTHS(SYSDATE,18)-SYSDATE)*3 AS 짬밥수
FROM DUAL; // (ADD_MONTHS(SYSDATE,18)-SYSDATE) 결과는 일로 나옴
✅ RR 과 YY의 차이점