- 현재 날짜 및 시간
현재(시스템) 날짜. 데이터 형식은 날짜(DATE)형
SYSDATE, CURRENT_DATE, LOCALTIMESTAMP
SELECT SYSDATE, CURRENT_DATE, LOCALTIMESTAMP
FROM DUAL;
--==>> 2023-10-19 10:43:02 / 2023-10-19 10:43:02 / 23/10/19 10:43:02.000000000
- 날짜 크기비교
오라클에서는 날짜 데이터의 크기 비교가 가능하다. 날짜 데이터에 대한 크기 비교 시 과거보다 미래를 더 큰 값으로 간주한다.
ex) 오늘<내일 -> true
오늘>내일 -> false
- BETWEEN ⓐ AND ⓑ
ⓐ 이상 ⓑ 이하, 숫자 뿐만 아니라 날짜도 적용 가능
SELECT NAME"사원명", JOB"직종", HIREDATE"입사일"
FROM TBL_EMP
WHERE HIREDATE BETWEEN TO_DATE('1981-4-2','YYYY-MM-DD')
AND TO_DATE('1981-9-28','YYYY-MM-DD');
- 날짜 연산
날짜 연산의 기본 단위는 일수(DAY)
SELECT SYSDATE "COL1" -- 2023-10-20 15:38:26
, SYSDATE + 1 "COL2" -- 2023-10-21 15:38:26
, SYSDATE - 2 "COL3" -- 2023-10-18 15:38:26
, SYSDATE + 30 "COL4" -- 2023-11-19 15:38:26
FROM DUAL;
- 시간 단위 연산
SELECT SYSDATE "COL1" -- 2023-10-20 15:41:37
, SYSDATE + 1/24 "COL2" -- 2023-10-20 16:41:37
, SYSDATE - 2/24 "COL3" -- 2023-10-20 13:41:37
FROM DUAL;
- 날짜 - 날짜 → 일수
SELECT TO_DATE('2024-03-19', 'YYYY-MM-DD') - TO_DATE('2023-08-22', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> 210
- TO_DATE()
날짜 타입으로의 데이터 타입 변환
TO_DATE() 함수를 통해 문자 타입을 날짜 타입으로 변환을 수행하는 과정에서 내부적으로 해당 날짜에 대한 유효성 검사가 이루어진다.
즉, 13월 -> 에러발생, 32일 -> 에러발샹생
SELECT TO_DATE('2023-10-20', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>>2023-10-20 00:00:00
- ADD_MONTHS()
개월 수를 더하거나 빼주는 함수
SELECT SYSDATE "COL1"
, ADD_MONTHS(SYSDATE, 2) "COL2"
, ADD_MONTHS(SYSDATE, 3) "COL3"
, ADD_MONTHS(SYSDATE, -2) "COL4"
, ADD_MONTHS(SYSDATE, -3) "COL5"
FROM DUAL;
--==>> 2023-10-20 16:19:01 → 현재
-- 2023-12-20 16:19:01 → 2개월 후
-- 2024-01-20 16:19:01 → 3개월 후
-- 2023-08-20 16:19:01 → 2개월 전
-- 2023-07-20 16:19:01 → 3개월 전
- MONTHS_BTWEEN()
첫 번째 인자값에서 두 번째 인자값을 뺀 개월 수를 반환한다.
개월 수의 차이를 반환하는 함수 결과값의 부호가 『-』(음수)로 반환되었을 경우에는 첫 번째 인자값에 해당하는 날짜보다 두 번째 인자값에 해당하는 날짜가 『미래』라는 의미로 확인할 수 있다.
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31', 'YYYY-MM-DD')) "COL1"
FROM DUAL;
--==>> 256.667160991636798088410991636798088411
- NEXT_DAY()
첫 번째 인자값에서 가장 가까운 두 번째 인자값의 날짜를 반환한다.
SELECT NEXT_DAY(SYSDATE, '토') "COL1"
, NEXT_DAY(SYSDATE, '월') "COL2"
FROM DUAL;
--==>> 2023-10-21 16:25:02
-- 2023-10-23 16:25:02
- LAST_DAY()
해당 날짜가 포함되어 있는 그 달의 마지막 날을 반환한다.
SELECT SYSDATE "COL1" -- 2023-10-20
, LAST_DAY(SYSDATE) "COL2" -- 2023-10-31
, LAST_DAY(TO_DATE('2023-02-12', 'YYYY-MM-DD')) "COL3" -- 2023-02-28
, LAST_DAY(TO_DATE('2020-02-12', 'YYYY-MM-DD')) "COL4" -- 2020-02-29
FROM DUAL;
- 날짜 데이터를 대상으로 반올림, 절삭
날짜 반올림
SELECT SYSDATE "COL1" -- 2023-10-23 → 기본 현재 날짜
, ROUND(SYSDATE, 'YEAR') "COL2" -- 2024-01-01 → 연도까지 유효한 데이터 (상반기 / 하반기 기준)
, ROUND(SYSDATE, 'MONTH') "COL3" -- 2023-11-01 → 월까지 유효한 데이터 (15일 기준)
, ROUND(SYSDATE, 'DD') "COL4" -- 2023-10-23 → 일까지 유효한 데이터 (정오 기준)
, ROUND(SYSDATE, 'DAY') "COL5" -- 2023-10-22 → 일까지 유효한 데이터 (수요일 정오 기준)
FROM DUAL;
날짜 절삭
SELECT SYSDATE "COL1" -- 2023-10-23 → 기본 현재 날짜
, TRUNC(SYSDATE, 'YEAR') "COL2" -- 2023-01-01 → 연도까지 유효한 데이터
, TRUNC(SYSDATE, 'MONTH') "COL3" -- 2023-10-01 → 월까지 유효한 데이터
, TRUNC(SYSDATE, 'DD') "COL4" -- 2023-10-23 → 일까지 유효한 데이터
, TRUNC(SYSDATE, 'DAY') "COL5" -- 2023-10-22 → 그 전 주에 해당하는 일요일
FROM DUAL;
'Study📚 > Oracle' 카테고리의 다른 글
Oracle - INSERT, UPDATE, DELETE, ORDER BY 절 (0) | 2023.11.05 |
---|---|
Oracle - 허얼마나 남았나... (0) | 2023.10.29 |
Oracle - NVL(), NVL2(), COALESCE(), 문자열 다루기 (1) | 2023.10.24 |
Oracle - SELECT 문 관찰 (1) | 2023.10.22 |
Oracle - 테이블 생성하고 데이터 삽입하기 (1) | 2023.10.22 |