본문 바로가기

Database/Oracle

날짜 함수

● 현재 시간을 얻는 함수 (SYSDATE : 오라클 서버 시간, CURRENT_DATE : 접속자의 시간(세션))

 

SELECT SYSDATE, CURRENT_DATE, SYSTIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;

 

- 세션 시간과 포맷 변경

 

ALTER SESSION SET TIME_ZONE = '09:00'; (한국의 경우)

ALTER SESSION SET TIME_ZONE = '-08:00'; (미국 LA의 경우)

ALERT SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

 

● 날짜 추출함수 EXTRACT(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND FROM ...)

 

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 MEMBERS 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 MEMBERS WHERE ADD_MONTHS(SYSDATE, -6) < REGDATE;

 

● 날짜의 차이를 알아내는 함수 MONTHS_BETWEEN(날짜, 날짜)

 

SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2013-12-25')) FROM DUAL;

 

- 등록한지 6개월이 안 되는 회원 조회

SELECT * FROM MEMBERS 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_MONTHS(SYSDATE, 2)) FROM DUAL;

 

● 지정된 범위에서 날짜를 반올림하는 / 자르는 함수 ROUND/TRUNC(날짜, 포맷)

 

SELECT ROUND(SYSDATE, 'CC'), TRUNC(SYSDATE, 'CC') FROM DUAL;

SELECT ROUND(SYSDATE, 'YEAR'), TRUNC(SYSDATE, 'YEAR') FROM DUAL;

SELECT ROUND(SYSDATE, 'Q'), TRUNC(SYSDATE, 'Q') FROM DUAL;

SELECT ROUND(SYSDATE, 'MONTH'), TRUNC(SYSDATE, 'MONTH') FROM DUAL;

SELECT ROUND(SYSDATE, 'W'), TRUNC(SYSDATE, 'W') FROM DUAL;

SELECT ROUND(SYSDATE, 'DAY'), TRUNC(SYSDATE, 'DAY') FROM DUAL;

SELECT ROUND(SYSDATE, 'D'), TRUNC(SYSDATE, 'D') FROM DUAL;

SELECT ROUND(SYSDATE, 'HH'), TRUNC(SYSDATE, 'HH') FROM DUAL;

SELECT ROUND(SYSDATE, 'MI'), TRUNC(SYSDATE, 'MI') FROM DUAL;

 

SELECT ROUND(TO_DATE('2045-07-03'), 'YEAR'), TRUNC(TO_DATE('2045-07-03'), 'YEAR') FROM DUAL;

 

● 요일 구하기

 

SELECT DECODE(TO_CHAR(SYSDATE, 'd'),1,'일',2, '월',3, '화',4, '수',5, '목',6, '금',7,'토') DAY FROM DUAL;

'Database > Oracle' 카테고리의 다른 글

기타 함수  (0) 2017.02.23
NULL 관련 함수  (0) 2017.02.23
변환 함수  (0) 2017.02.23
숫자 함수  (0) 2017.02.23
문자열함수  (0) 2017.02.23