[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번이다.
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - NULL 관련 함수(NVL) (0) | 2022.08.09 |
---|---|
[Oracle] 오라클 - 변환 함수 (TO_CHAR/SYSTIMESTAMP) (0) | 2022.08.09 |
[Oracle] 오라클 - 단일행 날짜 함수 (TO_DATE/TO_CHAR/INTERVAL) (0) | 2022.08.09 |
[Oracle] 오라클 - GROUP BY절 (HAVING 절) (0) | 2022.08.08 |
[Oracle] 오라클 - 집계함수(COUNT), SUM/MAX/MIN/AVG (0) | 2022.08.08 |
블로그의 정보
개발자 미니민의 개발로그
mini_min