ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 SQL - 숫자함수, 날짜함수, 변환함수
    웹프로그래밍/데이터베이스 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;