/*
<날짜관련 함수>
1) SYSDATE
- 현재 날짜와 시간을 반환
2) MONTHS_BETWEEN(DATE1, DATE2)
- 입력받은 두 날짜 사이의 개월수를 반환
- 결과 값 타입 NUMBER
3) ADD_MONTHS(DATE, NUMBER)
- 특정 날짜에 입력받은 숫자만큼의 개월수를 더한 날짜를 반환합니다.
- 결과 값 타입 DATE
** 날짜형식 FMMM <- 월 출력 (앞에 0빼고)
*/
SELECT ADD_MONTHS(SYSDATE, 6) FROM DUAL;
SELECT MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, 6), SYSDATE) FROM DUAL;
SELECT MONTHS_BETWEEN(SYSDATE,ADD_MONTHS(SYSDATE, 6)) FROM DUAL;
SELECT FLOOR(MONTHS_BETWEEN(SYSDATE, hire_date)/12) AS 근속연수
FROM emp
ORDER BY FLOOR(MONTHS_BETWEEN(SYSDATE, hire_date)/12) DESC;
/*
4) NEXT_DAY(DATE, 요일(문자|숫자))
- 특정 날짜에서 구하려는 요일의 가장 가까운 날짜를 리턴
- 1 : 일요일, 2 : 월요일
5) LAST_DAY(DATE)
- 해당 뭘의 마지막 날짜를 반환
- 반환결과 DATE타입
*/
SELECT SYSDATE, LAST_DAY(SYSDATE) FROM DUAL;
SELECT SYSDATE, NEXT_DAY(SYSDATE, '금') FROM DUAL;
SELECT SYSDATE, NEXT_DAY(SYSDATE, 1) FROM DUAL;
/*
NLS : 국가별 언어 지원
언어 지원과 관련된 설정 정보를 확인하는 쿼리
*/
--NLS설정 확인 명령어
SELECT * FROM NLS_SESSION_PARAMETERS;
ALTER SESSION SET NLS_LANGUAGE = AMERICAN; -- 언어변경
SELECT SYSDATE, NEXT_DAY(SYSDATE, 'sunday') FROM DUAL; -- 영어문자열 가능
ALTER SESSION SET NLS_LANGUAGE = KOREAN;
--날짜 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT SYSDATE FROM DUAL;
/*
6) EXTRACT(YEAR|MONTH|DAY FROM DATE)
- 특정 날짜에서 연도, 월, 일 정보를 추출해서 반환
*/
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
SELECT emp_name, EXTRACT(YEAR FROM hire_date) AS 입사년도, EXTRACT(MONTH FROM hire_date) AS 입사월,EXTRACT(DAY FROM hire_date) AS 입사일
FROM emp
WHERE EXTRACT(YEAR FROM hire_date) = 2001;
SELECT employee_id, emp_name, hire_date, FLOOR(MONTHS_BETWEEN(SYSDATE, hire_date)/12) AS 근속년수
FROM emp
WHERE FLOOR(MONTHS_BETWEEN(SYSDATE, hire_date)/12)>20
ORDER BY FLOOR(MONTHS_BETWEEN(SYSDATE, hire_date)/12) DESC;
/*
7) ROUND(DATE, 'YEAR'|'MONTH'|'DAY')
- 반올림한 날짜를 반환
8) TRUNC(DATE, 'YEAR'|'MONTH'|'DAY')
- 잘라낸 날짜를 반환
SELECT TRUNC(DATE, 'YEAR') -- 월, 일 초기화
, TRUNC(DATE, 'MONTH') -- 일 초기화
, TRUNC(DATE, 'DAY') -- 요일 초기화 (일요일)
*/
SELECT ROUND(SYSDATE, 'DAY') FROM DUAL;
SELECT ROUND(TO_DATE(20230416), 'MONTH') FROM DUAL;
SELECT TRUNC(SYSDATE, 'DAY') FROM DUAL;
Study/SQL
댓글