1. 문자열 함수
2. 숫자 함수
3. 날짜 함수
4. 변환 함수
5. NULL 관련 함수
6. 집계 함수
3. 날짜 함수
1) SYSDATE, SYSTIMESTAMP
=> ORACLE 서버가 설치되어 있는 곳에서의 시간
2) CURRENT, CURRENT_TIMESTAMP
=> 세션 설정에 따른 시간
* TIMESTAMP : 시, 분, 초 보다 더 구체적인 시간을 알 수 있음
3) EXTRACT
=> 원하는 날짜만 추출하는 함수
4) ADD_MONTH
=> 특정 날짜를 추가하는 함수
5) MONTHS_BETWEEN(날짜, 날짜)
=> 두 날짜 개월의 차이
6) NEXT_DAY(현재 날짜, 다음 요일)
=> 다음 요일을 알려주는 함수
7) LAST_DAY(날짜)
=> 월의 마지막 일자를 알려주는 함수
8) ROUND(날짜, 포멧), TRUNC(날짜, 포멧)
=> 날짜를 반올림하는 함수, 날짜를 자르는 함수

세션 시간과 포맷 변경
NLS_DATE_DATE_FORMAT
ALTER SESSION SET TIME_ZONE = '-1:0'
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
EXTRACT
=> 특정 날짜 추출 함수
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;
SELECT EXTRACT(MINUTE FROM SYSDATE) FROM DUAL;
SELECT EXTRACT(SECOND FROM SYSDATE) FROM DUAL;
<예제>
가입 회원 중에서 비수기(2, 3, 11, 12)월 달에 가입한 회원을 조회하기
SELECT * FROM MEMBER WHERE EXTRACT (MONTH FROM REGDATE) IN(2, 3, 11, 12);
ADD_MONTH(날짜, 정수)
SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL;

SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;

<예제>
가입한 회원 중에서 가입한지 6개월이 안되는 회원을 조회하기
SELECT * FROM MEMBER WHERE ADD_MONTH(SYSDATE, -6) < REGDATE ;
-- 6개월이 안된 회원 출력
SELECT * FROM MEMBER WHERE ADD_MONTH(SYSDATE, -6) >= REGDATE ;
-- 6개월이 넘은 회원 출력
MONTHS_BETWEEN(날짜, 날짜)
=> 날짜 차이를 알아내는 함수
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2021-07-01') FROM DUAL;
<예제>
가입한 회원 중에서 가입한지 6개월이 안되는 회원 조회하기
SELECT * FROM MEMBER WHERE MONTHS_BETWEEN(SYSDATE, REGDATE) < 6;
NEXT_DAY(현재날짜, 다음요일)
SELECT NEXT_DAY(SYSDATE, '토요일') FROM DUAL;
-- 또는
SELECT NEXT_DAY(SYSDATE, '토') FROM DUAL;
-- 또는
SELECT NEXT_DAY(SYSDATE, 7) FROM DUAL;
=> 돌아오는 다음 토요일의 날짜를 출려해준다.

LAST_DAY(날짜)
SELECT LAST_DAY(SYSDATE) FROM DUAL;

<예제>
SELECT LAST_DAY(ADD_MONTHA(SYSDATE, 3)) FROM DUAL;
=> 오늘 날짜로부터 3개월 후의 마지막 날짜를 알 수 있다.

ROUND, TRUNC(날짜, 포멧)
SELECT ROUND(SYSDATE, 'CC'), TRUNC(SYSDATE, 'CC') FROM DUAL;
-- 몇 세기 = CC
SELECT ROUND(SYSDATE, 'YEAR'), TRUNC(SYSDATE, 'YEAR') FROM DUAL;
SELECT ROUND(SYSDATE, 'Q'), TRUND(SYSDATE, 'Q') FROM DUAL;
SELECT ROUND(SYSDATE, 'MONTH'), TRUNC(SYSDATE, 'MONTH') FROM DUAL;
SELECT ROUND(SYSDATE, '2'), TRUND(SYSDATE, 'W') FROM DUAL;
SELECT ROUND(SYSDATE, 'DAY'), TRUNC(SYSDATE, 'DAY') FROM DUAL;
SELECT ROUND(SYSDATE, 'D'), TRUND(SYSDATE, 'D') FROM DUAL;
SELECT ROUND(SYSDATE, 'HH'), TRUND(SYSDATE, 'HH') FROM DUAL;
SELECT ROUND(SYSDATE, 'MI'), TRUND(SYSDATE, 'MI') FROM DUAL;
'DB > Oracle' 카테고리의 다른 글
내장함수_ 숫자 (0) | 2021.07.01 |
---|---|
내장 함수_ 문자열 (0) | 2021.06.29 |
중복 값 제거 (DISTINT) (0) | 2021.06.29 |
ROWNUM (0) | 2021.06.29 |
정규식 (0) | 2021.06.29 |