웹프로그래밍/데이터베이스

오라클 SQL - 숫자함수, 날짜함수, 변환함수

Gamcho 2018. 6. 20. 10:57





--##숫자함수



-- 절대값 ABS

SELECT ABS(-15) FROM DUAL;


-- 버림 FLOOR

SELECT FLOOR(34.5678) FROM DUAL;


-- 반올림 ROUND

SELECT ROUND(35.123, 1), ROUND(45.123, 2), ROUND(78.123 -1) FROM DUAL;


-- 잘라내기 TRUNC

SELECT TRUNC(12.345, 2), TRUNC(34.567, 0 ), TRUNC(78.901, -1) FROM DUAL;





--##날짜함수




SELECT SYSDATE FROM DUAL;

SELECT SYSDATE-1, SYSDATE, SYSDATE +1 FROM DUAL;


--날짜 사이 간격 계산 MONTHS_BETWEEN

SELECT SYSDATE, HIREDATE, MONTHS_BETWEEN(SYSDATE, HIREDATE) FROM EMP WHERE DEPTNO = 10;


--개월 수 더하는 ADD_MONTHS

SELECT ENAME, HIREDATE, ADD_MONTHS(HIREDATE,3) FROM EMP WHERE DEPTNO=10;


--요일에 해당하는 가장 빠른 날짜 반환 NEXT_DAY

SELECT SYSDATE, NEXT_DAY(SYSDATE, '수요일') FROM DUAL;

SELECT SYSDATE, NEXT_DAY(SYSDATE, '수'), NEXT_DAY(SYSDATE,4) FROM DUAL;


--언어 변경

ALTER SESSION SET NLS_LANGUAGE=AMERICAN;

SELECT SYSDATE, NEXT_DAY(SYSDATE, 'WEDESDAY') FROM DUAL;

ALTER SESSION SET NLS_LANGUAGE=KOREAN;


--해당 달의 마지막 날짜 반환 LAST_DAY

SELECT SYSDATE, LAST_DAY(SYSDATE) FROM DUAL;


--ROUND 날짜함수 반올림(15일 기준으로)

SELECT HIREDATE, ROUND(HIREDATE, 'MONTH') FROM EMP WHERE DEPTNO=10;


--TRUNC 날짜함수 잘라내기

SELECT HIREDATE, TRUNC(HIREDATE,'MONTH') FROM EMP WHERE DEPTNO=10;





--##변환 함수


SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;

SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY') FROM EMP WHERE DEPTNO=10;

SELECT SYSDATE, TO_CHAR(SYSDATE, 'YY/MON/DD DY') FROM EMP WHERE DEPTNO=10;

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


--숫자를 문자, L 각 지역(나라)별 통화기호

SELECT ENAME, SAL, TO_CHAR(SAL, 'L999,999') FROM EMP WHERE DEPTNO=10;


-- 숫자를 문자, 숫자를 천 단위로 구분

SELECT ENAME, SAL, TO_CHAR(123456, '999,999,999') FROM EMP WHERE DEPTNO=10;


-- 문자를 날짜, 1981년 2월 20일에 입사한 사원을 검색

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE=TO_DATE(19810220, 'YYYYMMDD');


-- 문자를 날짜, 날짜 계산시 형변환(TRUNC로 소수점 잘라냄)

SELECT SYSDATE-'2008/01/01' FROM DUAL; --오류발생

SELECT TRUNC(SYSDATE-TO_DATE('2008/01/01', 'YYYY/MM/DD')) FROM DUAL;


-- 문자를 숫자, 

SELECT '10,000' + '20,000' FROM DUAL; --오류발생

SELECT TO_NUMBER('10,000','999,999') + TO_NUMBER('20,000','999,999') FROM DUAL;