- 오라클에서 날짜를 저장 데이터형 : DATE, TIMESTAMP
1. SYSDATE
- 오라클이 설치된 컴퓨터의 시스템 시간을 알려준다.
--SYSDATE 예시)
SELECT SYSDATE FROM DUAL; -- 오늘 날짜 출력
SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') FROM DUAL; -- 현재 월-일-년도 시간:분:초 출력
--SYSDATE 연산 예시)
SELECT SYSDATE+1 FROM DUAL; -- 내일 날짜 출력
SELECT TO_CHAR(SYSDATE-30, 'MM-DD-YYYY HH24:MI:SS') FROM DUAL; -- 30일 전 출력
SELECT TO_CHAR(SYSDATE-8/24, 'MM-DD-YYYY HH24:MI:SS') FROM DUAL; -- 8시간 전 출력
SELECT TO_CHAR(SYSDATE-30/1440, 'MM-DD-YYYY HH24:MI:SS') FROM DUAL; -- 30일 전 출력
2. MONTHS_BETWEEN
- 형식 : MONTHS_BETWEEN(날짜1, 날짜2)
- 기능 : 날짜1과 날짜2 사이의 개월수를 구해준다.
- 날짜1>날짜2 (즉, 날짜1이 더 최근, 날짜2가 더 예전)이면 결과값은 (+)
날짜1<날짜2 이면 결과값은 (-)
- 소숫점까지 나온다.
--MONTHS_BETWEEN 예시)
SELECT MONTHS_BETWEEN(SYSDATE, DATE '2019-05-12') FROM DUAL; --결과: 19.05.12로부터 몇개월 지났는지
SELECT MONTHS_BETWEEN(DATE '2020-02-03', DATE '2019-12-02') FROM DUAL; --결과: 2.03
SELECT MONTHS_BETWEEN(DATE '2019-12-02', DATE '2020-02-03') FROM DUAL; --결과: -2.03
3. NEXT_DAY
- 형식 : NEXT_DAY('기준일자', '찾을 요일')
- 기능 : 기준일자로부터 다음번 지정 요일이 몇일인지
- 요일표기 :
1) 영문판 : 'SUNDAY', 'SUN' 과 같이 기재
2) 한글판 : '일요일', '일' 과 같이 기재
3) 숫자 : 일요일부터 1,2,3,4,... 순서로 센다. (1: 일요일, 2:월요일, ... 7: 토요일)
--NEXT_DAY 예시)
--오라클 영어판 설치한 경우)
SELECT NEXT_DAY(DATE '2020-01-01', 'SUNDAY') FROM DUAL;
SELECT NEXT_DAY(DATE '2020-01-01', 'SUN') FROM DUAL;
SELECT NEXT_DAY(DATE '2020-01-01', 1) FROM DUAL;
--오라클 한글판 설치한 경우)
SELECT NEXT_DAY(DATE '2020-01-01', '일요일') FROM DUAL; --결과: 20/01/05 (가장 가까운 다음 일요일)
SELECT NEXT_DAY(DATE '2020-01-01', '일') FROM DUAL; --결과: 20/01/05 (가장 가까운 다음 일요일)
SELECT NEXT_DAY(DATE '2020-01-01', 1) FROM DUAL; --결과: 20/01/05 (가장 가까운 다음 일요일)
SELECT NEXT_DAY(DATE '2020-01-01', '토') FROM DUAL; --결과: 20/01/04 (가장 가까운 다음 토요일)
SELECT NEXT_DAY(DATE '2020-01-01', 7) FROM DUAL; --결과: 20/01/04 (가장 가까운 다음 토요일)
4. LAST_DAY
- 형식 : LAST_DAY(날짜)
- 기능 : 해당 월의 마지막 날짜를 알려준다.
--LAST_DAY 예시)
SELECT LAST_DAY(SYSDATE) FROM DUAL; --결과: 이번달 마지막 날짜
SELECT LAST_DAY(ADD_MONTHS(SYSDATE,1)) FROM DUAL; --결과: 다음달 마지막 날짜
SELECT LAST_DAY('20/08/01') FROM DUAL; --결과: 20/08/31 (2020년 8월의 마지막 날짜)
5. ADD_MONTHS
- 형식 : ADD_MONTHS(날짜, 개월수)
- 기능 : 해당 날짜로부터 지정한 개월수 뒤의 날짜를 알려준다.
--ADD_MONTHS 예시)
SELECT ADD_MONTHS('19/12/02',6) FROM DUAL; --결과: 20/06/02 (19/12/02로부터 6개월 후의 날짜)
ROUND와 TRUNC는 숫자함수로써 각각 소수점 반올림, 버림 기능을 하기도 하지만 날짜함수로써도 사용된다.
6. ROUND
- 형식 : ROUND(날짜, 날짜형식)
- 기능 : 날짜를 반올림 한다.
--ROUND 예시)
SELECT
TO_CHAR(
ROUND( TO_DATE( '2020-02-03 18:53:29', 'YYYY-MM-DD HH24:MI:SS' ) ),
'YYYY-MM-DD' )
FROM
dual;
--결과: 2020-02-04 ('2020-02-03 18:53:29'을 반올림한 날짜)
7. TRUNC
- 형식 : TRUNC(날짜, 날짜형식)
- 기능 : 날짜를 버림한다.
--TRUNC 날짜계산 예시)
--1) 분까지만 내버려두고 초는 버림 ==> 결과: 19/05/12 13:35:00
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'MI') FROM DUAL;
--2) 시까지만 내버려두고 분은 버림 ==> 결과: 19/05/12 13:00:00
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'HH24') FROM DUAL;
--3) 일까지만 내버려두고 시는 버림 ==> 결과: 19/05/12 00:00:00
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'DD') FROM DUAL;
--4) 월까지만 내버려두고 일은 버림 ==> 결과: 19/05/01 00:00:00
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'MM') FROM DUAL;
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'MON') FROM DUAL;
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'MONTH') FROM DUAL;
--5) 년까지만 내버려두고 월은 버림 ==> 결과: 19/01/01 00:00:00
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'Y') FROM DUAL;
SELECT TRUNC(TO_DATE('2019-05-12 13:35:28', 'YYYY-MM-DD HH24:MI:SS'), 'YY') FROM DUAL;
↓이 글이 유용했다면 아래 ♡버튼을 눌러주세요! ↓
'Programming > Database(Oracle, SQL)' 카테고리의 다른 글
[Oracle/SQL] 집합연산자 UNION, UNION ALL, INTERSECT, MINUS (0) | 2020.02.18 |
---|---|
[Oracle/SQL] 시퀀스 (Sequence) (0) | 2020.02.16 |
[Oracle/SQL] 형 변환함수 - TO_CHAR, TO_NUMBER, TO_DATE (0) | 2020.02.04 |
[Oracle/SQL] 숫자함수 - ROUND, TRUNC, CEIL, MOD (0) | 2020.02.02 |
[Oracle/SQL] 문자함수 - SUBSTR, INSTR, TRIM 등 (0) | 2020.01.30 |
[Oracle/SQL] SQL 연산자, 데이터형 (0) | 2020.01.29 |
[Oracle/SQL] SQL의 종류 - DQL, DML, DDL, DCL, TCL (0) | 2020.01.29 |
[Oracle 기초] 가격정책, CRUD, 스키마 (0) | 2020.01.27 |