오라클 숫자처리함수 + 날짜처리함수(단일함수)

최주영·2023년 4월 3일
0

오라클

목록 보기
5/22

숫자처리함수

✅ ABS

  • 절대값을 처리하는 함수
SELECT ABS(-10), ABS(10) FROM DUAL;  // 둘다 10으로 나옴

✅ POWER(), SQRT()

  • 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

  • 소수점을 반올림하는 함수
  • 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

  • 날짜의 년도, 월, 일자를 따로 출력할 수 있는 함수
  • EXTRACT(YEAR 또는 MONTH 또는 DAY FROM 날짜) : 숫자로 출력해줌
SELECT EXTRACT(YEAR FROM SYSDATE) AS 년, EXTRACT(MONTH FROM SYSDATE) AS 월,
       EXTRACT(DAY FROM SYSDATE) AS 일
       FROM DUAL;  // -- 현재날짜의 년, 월, 일 출력하기

날짜 처리 함수들을 이용한 예제 문제

  • 오늘 군대복부기간은 1년 6개월 계산해서
  • 전역일자를 구하고, 전역때까지 먹는 짬밥수(하루세끼)를 구하기
SELECT ADD_MONTHS(SYSDATE,18) AS 전역일자, (ADD_MONTHS(SYSDATE,18)-SYSDATE)*3 AS 짬밥수 
FROM DUAL; //  (ADD_MONTHS(SYSDATE,18)-SYSDATE) 결과는 일로 나옴

✅ RR 과 YY의 차이점

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글