● 현재 시간을 얻는 함수 (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;