개발자 미니민의 개발스터디

[Oracle] 오라클 - EXTRACT/MONTHS_BETWEEN/NEXT_DAY

by mini_min
[Oracle] 
오라클 - EXTRACT/MONTHS_BETWEEN/LAST_DAY/NEXT_DAY

✔️ EXTRACT 추출

날짜에서 필요한 시간/일자를 추출할 때 사용하는 함수

 

- EXTRACT( { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | TIMEZONE_HOUR | TIMEZONE_MINUTE | TIMEZONE_REGION | TIMEZONE_ABBR } FROM { expr } )

SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;

 

🔒 문제

--empNo, name, hireDate 이중에서 2010년 이상 입사한 사람 출력
    SELECT empNo, name, hireDate
    FROM emp
    WHERE EXTRACT(YEAR FROM hireDate) >= 2010;

 

 

 

✔️MONTHS_BETWEEN(date1, date2) : 월수로 반환

두 날짜를 받아서, 두 날짜의 개월 수 차이를 반환한다! <근속년수> 구할 목적으로 사용하면 좋음!

SELECT MONTHS_BETWEEN(TO_DATE('2022-05-20', 'YYYY-MM-DD'), 
		TO_DATE('2022-04-10', 'YYYY-MM-DD'))
		FROM dual;

 

--emp 테이블에서 empNo, name, rrn, hireDate, 근속년수
    SELECT empNo, name, rrn, hireDate, TRUNC(MONTHS_BETWEEN(SYSDATE, hireDate)/12) 근속년수
    FROM emp;
💡 현재 날짜에서 입사일을 빼고 12로 나눠서 근속년수 구함.

 

--나이 구하기
       SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('1996-04-02', 'YYYY-MM-DD'))/12)
       FROM dual;
--주민번호로 나이구하기
        SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(rrn, 1,6), 'RRMMDD'))/12) 나이 FROM emp;
💡 주민번호로 나이 구할 때, SUBSTR 과 TO_DATE, 사용해서 SYSDATE - (주민번호 생일) 빼서 나이 구함.

 

 

 

✔️ADD_MONTHS

 - ADD_MONTHS(date, integer) : 날짜에 월을 더해주는 것

SELECT ADD_MONTHS(SYSDATE, 1) 다음달 FROM dual;
SELECT ADD_MONTHS(SYSDATE, -1) 다음달 FROM dual;
-- emp : 6개월 이내 입사한 사람. empNo, name, hireDate
    SELECT empNo, name, hireDate
    FROM emp
    WHERE ADD_MONTHS(SYSDATE, -6) < hireDate;

 

 

 

✔️LAST_DAY(date)

 - 말일을 구해주는 함수

SELECT SYSDATE, LAST_DAY(SYSDATE) FROM dual;

 --이번 달은 말일까지 며칠 남은?
    SELECT LAST_DAY(SYSDATE) - SYSDATE
    FROM dual;

 

 

 

✔️NEXT_DAY(date, char)

 - char 로 주어진 첫번째 요일 구하기 

-- 오늘을 기준으로 가장 가까운 금요일
	SELECT SYSDATE, NEXT_DAY(SYSDATE, '금요일') FROM dual;
	SELECT SYSDATE, NEXT_DAY(SYSDATE, 6) FROM dual;
			--일요일 :1 토요일:7
--오늘날짜, 이번주 일요일, 이번주 토요일
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 1)-7, NEXT_DAY(SYSDATE-1, 7) FROM dual;
💡 요일 순서
일요일이 1번,
마지막 토요일이 7번이다.

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기