SQL - 날짜 내장 함수
EXTRACT, ADD_MONTH, MONTHS_BETWEEN, NEXT_DAY, LAST_DAY, ROUND/TRUNC
SYSDATE, CURRENT_DATE, SYSTIMESTAMP, COURRENT_TIMESPAMP - 현재 시간을 얻는 함수
SELECT SYSDATE, CURRENT_DATE, SUSTIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;
날짜 출력 방식 변경
ALT SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS; --년월일시분초 출력방식 변경
EXTRACT - 날짜 추출함수
- EXTRACT(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND FROM ...)
-- EMPLOYEE 테이블에서 직원의 이름, 입사일, 근무년수를 조회
-- 단, 근무년수는 현재년도 - 입사년도로 조회
SELECT
EMP_NAME,
HIRE_DATE,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
FROM
EMPLOYEE;
ADD_MONTH - 날짜를 누적하는 함수
- ADD_MONTH(날짜, 정수(달 단위))
- 날짜에 정수(달 단위)만큼 개월 수 더해서 리턴
SELECT
SYSDATE,
ADD_MONTHS(SYSDATE, 5)
FROM
DUAL;
MONTHS_BETWEEN -날짜의 차이를 알아내는 함수
- MONTHS_BETWEEN(날짜, 날짜)
- 두 날짜의 개월 수 차이를 숫자로 리턴
SELECT
EMP_NAME,
HIRE_DATE,
CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE))
FROM
EMPLOYEE;
NEXT_DAY - 다음 요일을 알려주는 함수
- NEXT_DAY(현재날짜, 다음요일)
- 기존 날짜에서 구하려는 요일에 가장 가까운 날짜 리턴
SELECT
SYSDATE,
NEXT_DAY(SYSDATE, '토요일'),
NEXT_DAY(SYSDATE, 7), -- (일월화수목금토)=(1234567)
NEXT_DAY(SYSDATE, '토')
FROM DUAL;
LAST_DAY - 월의 마지막 일자를 알려주는 함수
SELECT LAST_DAY(SYSDATE) FROM DUAL; -- 현재 날짜의 달의 마지막 날을 알려줌
ROUND/TRUNC - 지정된 범위에서 날짜를 반올림하는/자르는 함수
--세기 단위로 반올림할것인가, 없앨것인가
SELECT ROUND(SYSDATE, 'CC'), TRUNC(SYSDATE, 'CC') FROM DUAL;
--년 단위로 반올림할것인가
SELECT ROUND(SYSDATE, 'YEAR'), TRUNC(SYSDATE, 'YEAR') FROM DUAL;
-- CC, YEAR, Q, MONTH, W, DAY, D, HH, MI
SELECT ROUND(SYSDATE), TRUNC(SYSDATE) FROM DUAL;